Git 测试和自述文件更新是否应该包含在带有功能的提交中?

Git 测试和自述文件更新是否应该包含在带有功能的提交中?,git,Git,我有一个用于库的git存储库,我偶尔会为它添加新功能(或者更新现有功能,步骤仍然相同) 无论何时,我都需要做三件事: 添加实现 添加测试 更新README.md 现在我有两个选择: 将它们放在一个提交中: 提交1:addfeature\u NAME+tests+update README.md 将它们放在三个不同的提交中: 提交1:添加功能\u名称 提交2:为特性名称添加测试 提交3:更新功能名称的README.md 如果我使用第一个选项,那么如果我认为我的功能不好,那么将更容易恢复

我有一个用于库的git存储库,我偶尔会为它添加新功能(或者更新现有功能,步骤仍然相同)

无论何时,我都需要做三件事:

  • 添加实现
  • 添加测试
  • 更新README.md
现在我有两个选择:

  • 将它们放在一个提交中:

    • 提交1:
      addfeature\u NAME+tests+update README.md
  • 将它们放在三个不同的提交中:

    • 提交1:
      添加功能\u名称
    • 提交2:
      为特性名称添加测试
    • 提交3:
      更新功能名称的README.md
  • 如果我使用第一个选项,那么如果我认为我的功能不好,那么将更容易恢复它,因为我只需要处理一次提交

    如果我使用第二个选项,它会将我的工作划分为不同的提交,这是有意义的


    哪个选项更好(或者可能有另一种方法)以及为什么?

    第一个选项是最常见的选项。
    例如“”

    与提交行为有什么关系?嗯,我总是在想,如果我需要撤消某个更改,即恢复相应的提交,会发生什么。换句话说,我认为我所做的承诺是“可回复性”。 在您的情况下,恢复所有三个连贯且紧密耦合的更改是最好的


    这和。

    我知道这听起来像是基于意见的,但“我应该每月一次将我所有的工作投入一次提交并推动它吗?”这样的问题也是如此,而它显然有一个符合最佳实践的答案。还有第三个选择:在一个功能分支上将它们投入三个不同的提交中,然后使用
    --no ff
    合并该要素分支。但我确实认为这是基于观点的,在这里不合适,对不起。所有这三种形式都是常用的,对于所有这三种形式,都可以给出它们最适合某些特定项目或团队的理由。@hvd谢谢!如果所有选项都是常用的,并且没有适用的良好实践,那么这对我来说是一个足够好的答案。我觉得可能有其他人在谷歌上搜索这个,因为他们不知道正确的方法,这样的回答(没有正确的方法)可能会有所帮助。或者甚至列出可能的好的选择(我相信有很多不好的方法可以做到这一点)的利弊。测试链接到代码,因此没有理由在测试之后提交它。如果你甚至做了TDD,你甚至可以想象以前做过。如果您的功能需要修复其他测试,您是否只提交代码,从而破坏测试。不,所以所有的事情都需要同时进行。(在TDD的精神下,代码和测试应该被视为相同的值,因此它不能比您应该首先提交的另一个更重要)。如果应该有多个提交,应该通过执行较小的步骤而不是要点来减少,谢谢!我喜欢你在链接的答案中提到的
    git-bisect
    ,看起来所有的git工具都是为第一个选项设计的。