Git系列:git commit 被忽视的高级用法

开源 0

在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「stormsha的主页」👈,持续学习,不断总结,共同进步,为了踏实,做好当下事儿~
  • 专栏导航
    • Python面试合集系列:Python面试题合集,剑指大厂
    • GO基础学习笔记系列:记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 运维系列:总结好用的命令,高效开发
    • 算法与数据结构系列:总结数据结构和算法,不同类型针对性训练,提升编程思维

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

💖The Start💖点点关注,收藏不迷路💖

📒文章目录

    • 引言
    • 一、编写有意义的 commit 消息
      • 实例
    • 二、交互式暂存
      • 使用方法
    • 三、原子提交
      • 实践技巧
    • 四、高级合并策略
      • 常用策略
      • 高级技巧
    • 五、保持历史清晰
    • 结语


在这里插入图片描述

引言

在软件开发中,Git 已成为版本控制的行业标准。它不仅帮助我们追踪代码的变更,还促进了团队协作。然而,Git 的强大之处在于细节,尤其是 git commit 命令的巧妙使用。本文将深入探讨 Git commit 的高级使用技巧,旨在为中高级开发者提供更深入的理解和实践指导。

Git commit 是记录代码变更的基石。一个良好的提交习惯可以极大提高代码的可维护性和团队协作的效率。本文将从 commit 消息的编写、交互式暂存、原子提交以及高级合并策略等方面展开讨论。

以下是一些常见的 git commit 参数及其讲解:

  • -m: 这个参数后面跟着的是要提交的更改的描述信息。如果你在提交时没有使用 -m 参数,Git 会打开一个文本编辑器让你输入提交信息。

  • -a: 这个参数告诉 Git 自动地将已经跟踪的文件的更改(即那些 Git 已经知道关于它们的信息的文件)添加到提交中,这样你就不需要显式地使用 git add 命令了。

  • --amend: 这个参数允许你修改最近一次的提交。这通常用于当你想要修改提交信息,或者当你想要将未暂存的更改添加到最近的提交中。

  • --no-verify: 跳过 pre-commit 和 commit-msg 钩子脚本的执行。

  • --signoff: 在提交信息中添加一个签名。

  • -u <key-id>: 使用 GPG 密钥签名提交。

  • --gpg-sign: 使用 GPG 密钥签名提交。

  • -C <commit>--reuse-message: 重用一个已有的提交信息。

  • -c <commit>--reedit-message: 重用一个已有的提交信息,但是编辑它。

  • -i <commit>--interactive: 交互式地选择要合并到提交中的更改。

  • -F <file>: 从指定的文件中读取提交信息。

  • --allow-empty: 允许提交一个空的提交。

  • -e--edit: 允许你编辑提交信息,即使使用了 -m 参数。

  • --no-edit: 使用默认信息而不进入编辑器。

  • -v--verbose: 显示更详细的信息,比如哪些文件被更改了。

  • -q--quiet: 减少输出信息。

  • --date <date>: 提交的作者日期。

  • --tz <timezone>: 时区。

  • --author <author>: 提交的作者信息。

  • --fixup: 产生一个“fixup”提交,通常用于后续的 squash 合并。

  • --squash: 产生一个“squash”提交,通常用于后续的 squash 合并。

  • --reset-author: 重置提交的作者为命令执行者。

这些参数可以帮助你更灵活地使用 git commit 命令,以适应不同的提交需求。

一、编写有意义的 commit 消息

commit 消息是沟通变更意图的关键。一个清晰的 commit 消息可以让团队成员快速理解你的工作。根据约定,commit 消息通常分为三部分:

  1. 标题:简短描述变更,通常不超过50个字符。
  2. 主体:详细解释变更的原因和影响,如果必要,可以分成多行。
  3. 断行:标题和主体之间应有一个空行。

实例

fix(pencil): stop graphite breaking when too much pressure appliedIncrease the pressure resistance of the graphite core inside bluepencils. Thisprevents the core from breaking apart due to downforce applied by the user.Closes #48.

二、交互式暂存

Git 提供了 git add -igit add --interactive 命令,允许开发者交互式地选择哪些更改进入暂存区。这对于大型更改非常有帮助,可以逐步提交,避免一次性提交过多更改。

使用方法

  1. 运行 git add -i
  2. 选择 staged 查看已暂存的更改。
  3. 选择 unstaged 查看未暂存的更改。
  4. 对更改进行暂存(add)、取消暂存(reset)或查看差异(diff)。

三、原子提交

原子提交是指将逻辑上相关的更改作为一个整体提交,以保证代码库的一致性。这有助于避免部分提交带来的问题。

实践技巧

  • 使用 git rebase -i 进行交互式变基,合并多个提交为一个。
  • 避免在 feature 分支上进行大量提交,而是定期 rebase 并 squash。

四、高级合并策略

Git 提供了多种合并策略,以适应不同的工作流程。

常用策略

  • Fast-forward:当两个分支的提交历史线性时,Git 会自动执行快进合并。
  • Three-way merge:当存在分支分叉时,Git 会执行三方合并,创建一个新的合并提交。

高级技巧

  • 使用 git merge --no-ff 强制创建一个新的合并提交,即使分支是线性的。
  • 使用 git merge --squash 将所有更改合并为一个单一的提交。

五、保持历史清晰

一个清晰的历史记录对于代码的可维护性至关重要。以下是一些保持历史清晰的技巧:

  1. 重写历史:使用 git rebase -i 重写不必要的提交或合并历史。
  2. 避免无意义的提交:合并无关紧要的更改,避免提交大量空格或格式更改。
  3. 使用分支:为每个功能或修复使用单独的分支,然后合并到主分支。

结语

Git commit 是软件开发中不可或缺的一部分。通过掌握高级提交技巧,开发者可以更高效地管理代码变更,提高团队协作的效率。记住,良好的提交习惯不仅有助于当前的项目,还能为未来的维护工作打下坚实的基础。


本文旨在为中高级开发者提供 Git commit 的深入理解和实践指导。希望读者能够从中获得启发,并将这些技巧应用到实际工作中,以提升代码质量和团队协作的效率。如果你有任何问题或想要进一步讨论,欢迎在评论区留下你的想法。


❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏、分享下吧,非常感谢!👍 👍 👍

🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The End💖点点关注,收藏不迷路💖

也许您对下面的内容还感兴趣: