git提交频率

Hamza Yerlikaya 52 git version-control commit

自从我从svn切换到git后,我每次重新编译时都开始做更多的提交,我的测试通过了我的工作.最后我最终按功能提交功能.

我还使用像emacs,wordpress等git跟踪一些其他项目.我看到他们不经常提交.所以我想知道你怎么承诺?

小智.. 63

Git项目本身(以及Linux项目,AFAIK)的指南是每个"逻辑上独立的变更集"的一个提交.

这有点模棱两可,但如果你经常在一个项目上工作,你可能不想每隔几天就做一次,并且你可能不希望在每次更改函数后都提交 - 如果你已经编辑了几个函数几个不同的文件,如果可以的话,您希望将所有相关功能提交到一起,并提供有用的提交消息.每次提交中修改的所有代码都应该是相关的,但它可以(并且可能应该)跨越多个文件.

您可能需要记住的是代码审查.如果有人试图决定他们是否应该合并你的工作,那么如果每个提交都在逻辑上包含并相互分离,那么他们就更容易处理所引入的工作.这可让您(或他人)樱桃挑选工作有效 - 如果你有三个提交与每个修改一个功能,但他们都加上不知何故 - 那么他们也许应该 - 你不能没有其他两个不破坏代码库应用一个被压扁到一个提交.

  • 您希望每个comitted版本都能正常工作(这有助于找到错误的二分法). (11认同)
  • 如果您拥有该项目,请随时提交.如果您正在编辑其他人的项目,请在修补程序完成时提交 (3认同)

kwatford.. 25

我还使用像emacs,wordpress等git跟踪一些其他项目.我看到他们不经常提交.

关于git的一个好处是你可以随心所欲地提交,然后当你想要进行上游提交时,你可以将几个相关的提交压缩成一个很好的干净提交git-rebase.

  • 应该注意的是,如果你不小心的话,git rebase虽然很棒,但却是一个非常危险的工具. (22认同)
  • @baudtack:完全没有.Rebase不受惩罚,如果你完全拙劣,只需使用`git reflog`和`git reset`回到你原来的位置! (4认同)
  • `git rebase`根本不危险.如果在执行rebase之前需要一个简单的安全网,请使用`git branch branchname.bck`创建当前HEAD的备份分支.如果你对rebase不满意,请使用`git reset --hard branchname.bck`返回上一个状态.如果你想要返回到重新定位的版本,重新提交的提交仍然存在,但由于它们被存储为未引用的对象,你需要`git reflog`或`git fsck --no-reflogs`来找到正确的sha1值. (3认同)

VonC.. 13

最后我最终按功能提交功能

不要忘记你可以git add通过函数" "功能,只进行一次提交:

  • 一旦为给定任务编写或修复了所有函数
  • 或者一旦你意识到当前函数太大/太复杂而不能很快成为提交的一部分:你可以提交当前"在舞台上"("git added"),这将不包括你当前在工作中的修改目录.

然后,提交的数量可以与分支的目的相关:

  • 本地分支:疯狂,随时随地提交
  • "公共"分支(你将推动的一个):
    • 对于本地存储库(对于选定的一组人):您可以重新组合至少非常小的"中间"提交
    • 对于公共存储库(对于所有开发人员或其他要查看的项目):您可以创建交互式rebase,以便通过"activity"或"task"重新组合您的提交,以使这些更具可读性.

简而言之," 发布注意事项"可以在D VCS(如"分布式")中指导您以正确的理由进行正确的提交.


baudtack.. 10

您提交的越多,使用git bisect查找错误就越容易

  • 只要提交所有编译和现有测试通过. (8认同)
  • @MariusK是的,我有点假设你没有将完全破坏的代码提交给规范分支. (2认同)

Alan Haggai .. 6

测试通过后,或添加/删除/修改功能单元时.