【发布时间】:2010-11-05 14:31:15
【问题描述】:
自从我从 svn 切换到 git 后,我开始在每次重新编译并且测试通过时进行更多提交,我提交了我的工作。最后我最终逐个提交函数。
我还使用 git 跟踪其他一些项目,例如 emacs、wordpress 等。我发现他们不经常提交。所以我想知道你多久提交一次?
【问题讨论】:
标签: git version-control commit
自从我从 svn 切换到 git 后,我开始在每次重新编译并且测试通过时进行更多提交,我提交了我的工作。最后我最终逐个提交函数。
我还使用 git 跟踪其他一些项目,例如 emacs、wordpress 等。我发现他们不经常提交。所以我想知道你多久提交一次?
【问题讨论】:
标签: git version-control commit
Git 项目本身(以及 Linux 项目 AFAIK)的指导方针是每个“逻辑上独立的变更集”提交一次。
这有点模棱两可,但如果您一直在处理一个项目,您可能不想每隔几天提交一次,并且您可能不想在每个函数之后提交更改 - 如果您在多个不同文件中编辑了多个函数,您希望尽可能将所有相关功能一起提交,并提供有用的提交消息。每次提交中修改的所有代码都应该是相关的,但它可以(并且可能应该)跨多个文件。
您可能要记住的是代码审查。如果有人试图决定他们是否应该合并您的工作,如果您将每个提交逻辑包含并彼此分开,那么他们处理所引入的工作会容易得多。这可以让你(或其他人)有效地挑选工作——如果你有三个提交,每个提交修改了一个函数,但它们都以某种方式耦合——你不能在不破坏代码库的情况下应用一个而没有另外两个——那么它们可能应该被压缩到一个提交。
【讨论】:
我还使用 git 跟踪其他一些项目,例如 emacs、wordpress 等。我发现他们不经常提交。
关于 git 的好处之一是您可以随意提交,然后当您想要进行上游提交时,您可以使用 git-rebase 将几个相关的提交压缩到一个干净的提交中。
【讨论】:
git reflog 和 git reset 回到原来的位置!
git rebase 一点也不危险。如果您在执行 rebase 之前想要一个简单的安全网,请使用 git branch branchname.bck 创建当前 HEAD 的备份分支。如果您对 rebase 不满意,请使用 git reset --hard branchname.bck 返回之前的状态。如果您想返回重新定位的版本,重新定位的提交仍然存在,但由于它们存储为未引用的对象,您需要git reflog 或git fsck --no-reflogs 才能找到正确的 sha1 值。
最后我最终逐个提交函数
别忘了你可以一个接一个地“git add”,只提交一次:
那么,提交的次数可以与分支的目的相关:
简而言之,在 DVCS(如“分布式”中)中,“发布考虑”可以指导您为正确的理由。
【讨论】:
您提交的越多,使用git bisect 查找错误就越容易
【讨论】:
一旦测试通过,或者当一个功能单元被添加/删除/修改时。
【讨论】:
这真的取决于。
我所做的是我经常在本地提交,就像你正在做的那样,但我只在积累了几个有影响力的更改后才推送我的更改。
这可以确保我保存我的工作,但它也不会让其他用户的 repo 变得混乱。
【讨论】:
我们的业务需求让我们在程序编译的时候提交到不稳定的分支,当它通过单元测试并且已经被客户审查时提交到稳定的分支(当它在不稳定的分支下时)。
【讨论】:
我在添加或更改功能并成功测试后提交。或者当我要从台式机切换到笔记本电脑并想要下载代码时,我会提交并推送。
【讨论】:
你正在做的事情对我来说听起来很正确。任何时候你有一个工作设置,如果你把事情搞砸了,你希望能够回到这个位置,这是一个提交的好时机。如果您有一个很好的设置,可以快速轻松地运行回归测试,我可以看到这种情况相当频繁。对我来说,我很幸运能每周制作一个。
【讨论】:
1- 提交应该频繁;应经常将代码提交到远程存储库(不仅仅是本地),以便备份代码以防万一丢失;这种情况发生的频率比您预期的要高,因此必须在一天结束前推送您的更改,以避免潜在的返工并确保远程存储库始终是最新的。
2- 提交应该是细粒度的,因此不应包括对代码库的太多更改。更改过多的提交更难恢复,并且不能从“历史”的角度用作参考,因为提交消息必须太长才能涵盖全部范围。
3- 提交应该有一个适当的标题;标题应以大写字母开头,不应以句点结尾。一般来说,标题应该简短而中肯。
4- 提交描述是可选的,但很好。
【讨论】:
我的承诺相距甚远。 git 并不是要“备份”您的代码,您应该使用 tarball 或 Dropbox 或其他东西来确保您不会丢失代码。
如果您不经常提交,您可以更好地准确判断应该在什么提交中进行,并且它为您提供比 50 次提交更流畅的历史记录
“糟糕”、“该死”、“忘记了那个文件”
你可以变基,但如果你从不暂存/提交,就没有必要撤消你的工作
【讨论】: