原子提交最佳实践

3
我使用git来管理一个项目。通常,我会在一周内处理一个功能,并做非常小的提交,如:
  • 实现某个实体类的存根;
  • 添加该实体的存储库服务;
  • 添加用于实体保存的测试;
  • 实现实体列表的UI;
  • ...
每个提交都很小(约20-50行),但它们彼此依赖。而且每个提交都确保整个系统正常工作。
与此相反的方法是创建一个单独的提交,包含500多行“实现功能X”。 问题是,哪种方法最佳?哪些提交是原子的?
PS. 我知道如何压缩提交。 我询问的是哲学问题。

你可以在分支中进行小的提交,然后进行非快进式合并,以引入“实现功能X”的提交。 - user4003407
3个回答

6
你用4个提交很好地说明了它们都与同一个任务相关,但完全可以被视为不同的提交。
较小的提交总比较长的提交更好。但你可能会问:“有多小?”我会使用以下哲学原则:
如果你能用一句简短的话来描述你在这次提交中做了什么,并且它是有意义的,那就提交吧。

3
此外,如果您无法用简单的一句话描述您的提交,那么它可能应该被分成几个提交。 - everton

1
小的提交是最佳实践。你可以更容易地看到哪个更改引入了错误。当需要合并工作时,与团队一起工作更容易。
这与您使用的版本控制系统无关。
编辑:
另一个好处是,随着您逐步构建和提交软件,您可以毫不畏惧地尝试下一步,知道当某些东西不起作用时,可以快速重置,回到到目前为止一切都正常的最后一步。

0
尽可能地让一个提交代表"一个逻辑工作单元",这样可以更容易地理解Git历史记录。

我正在尝试避免像“实现一个带有所有功能的新版本”这样的提交。但是我同意,大的提交可以使提交历史更清晰。问题在于如何定义边界以及哪种方式更好。这就是为什么我在询问的原因。 - abguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接