[译] 为何每次 Git Commit 要尽可能小?

简介: [译] 为何每次 Git Commit 要尽可能小?

原文:medium.com/better-prog…

Photo by Vlad Tchompalov on Unsplash

大部分与软件工程或程序开发有关的人都应该熟悉 Git 等版本控制系统。

通常,你会阶段性的作出改变、编写一段 commit message,然后将改变推送到仓库中。以下是一个例子:


git add .
git commit -m "[#2313213] 修正了 tooltip 中的 XSS 安全性"
git push # 向仓库中推送了 2 个改变过的文件

但是,你可能见到过包含了很多已改变文件的 commit,因为其包含了各种各样的主题:


git commit -m "[#3313212] 修正了 tooltip 中的 XSS 安全性 + 改善了 dropdown 的可访问性 + 为 user-dropdown.component 增加了单元测试 + 更新依赖项" # 向仓库中推送了 20 个改变过的文件

也有那种语焉不详的 commit:


git commit -m "改了点东西" # 向仓库中推送了 15 个改变过的文件

在使用了 Scrum 的敏捷环境或其它相关的敏捷方法论中,期望能快速而定期地交付用户价值。

受合作者的影响,我也尝试着采用其 小步提交并持续改善 的习惯。作为同时对其背后的商业和技术感兴趣的一员,这种方式引起了我的共鸣。

持续集成帮助我们及早发现问题

在本文中,我主要将概述为什么我喜欢这种方式。我们将看看在软件项目中小步提交的优势。

小步提交并持续改善的优势

  • 尽早地从工具(如一台 CI 服务器上的单元测试)和其它人(开发者、测试人员、产品经理)那里得到反馈,既有利于持续改善,又能避免未来大的改动
  • 当对一个 pull request 进行代码审查时,小的提交易于理解
  • 有助于写出更好的 commit message。由于比起大的提交,小步提交更聚焦、范围更窄,所以通常更容易总结其目的
  • 改善你的工作绩效(别当真)

也并非总要小步提交:

  • 把代码改动过多地分散到小的 commit 中实际上也难以审查。如果分别在 12 个文件中重命名了一个变量,你可不能创建 12 次单独的 commit。这些改变是一回事,应该统一 commit。
  • 如果小的 commit 过多,虽然其本身易于理解,但很可能就会因为数量太多而累积成为一个大的 pull request,这样还是难以审查。因此,应该避免造成会拖延过久的分支,这与持续改善的想法背道而驰

总结

如你所见,在软件项目中 commit 尽可能小有很多好处,也会有些问题。我认为,把握住最重要的方面,也就是尽快取得反馈且易于审查就够了。


相关文章
|
7月前
|
人工智能 缓存 开发工具
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
|
7月前
|
开发工具 git
Git Commit Msg
Git Commit Msg
72 0
|
7月前
|
JSON 开发工具 git
git rebase 合并当前分支的多个commit记录
git rebase 合并当前分支的多个commit记录
145 1
|
3月前
|
开发工具 git
GIT:如何合并已commit的信息并进行push操作
通过上述步骤,您可以有效地合并已提交的信息,并保持项目的提交历史整洁。记得在执行这些操作之前备份当前工作状态,以防万一。这样的做法不仅有助于项目维护,也能提升团队协作的效率。
154 4
|
3月前
|
开发工具 git
GIT:如何合并已commit的信息并进行push操作
通过上述步骤,您可以有效地合并已提交的信息,并保持项目的提交历史整洁。记得在执行这些操作之前备份当前工作状态,以防万一。这样的做法不仅有助于项目维护,也能提升团队协作的效率。
257 3
|
4月前
|
开发工具 git
Git——commit的提交规范
Git——commit的提交规范
109 4
|
4月前
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
84 0
|
5月前
|
前端开发 JavaScript 开发工具
前端优化之路:git commit 校验拦截
前面在git分支规范那篇文章里,介绍了commit提交规范,但是想要做到高效落地执行,就需要做些别的功课。
|
4月前
|
IDE 开发工具 git
我是怎么写 Git Commit message 的?
我是怎么写 Git Commit message 的?
55 0
|
6月前
|
存储 开发工具 git
蓝易云 - git中,add到暂存区,commit且push之后,暂存区域里还有内容吗
所以,当你执行 `git add`,然后是 `git commit`,最后是 `git push`之后,暂存区是空的,除非你又执行了新的 `git add`命令来添加更多的更改。
49 1