自从我从svn转换到git后,每次我重新编译并且测试通过时,我都会提交我的工作。最终,我会逐个函数地进行提交。
我也使用git来跟踪其他项目,如emacs、wordpress等。我发现他们不那么频繁地提交。所以我想知道你们提交的频率是多少?
自从我从svn转换到git后,每次我重新编译并且测试通过时,我都会提交我的工作。最终,我会逐个函数地进行提交。
我也使用git来跟踪其他项目,如emacs、wordpress等。我发现他们不那么频繁地提交。所以我想知道你们提交的频率是多少?
Git项目本身(以及Linux项目,据我所知)的指导方针是每个“逻辑上分离的更改集”提交一次。
这有点模糊,但如果您在不断地进行项目工作,您可能不想每隔几天提交一次,可能 您也不想在每次函数更改后提交 - 如果您在多个文件中编辑了多个函数,则希望一起提交所有相关功能(如果可以的话)并提供有用的提交消息。每个提交中修改的所有代码都应该相关,但肯定可以(并且可能应该)跨越多个文件。
您可能要记住的是在代码审查中。如果有人正在尝试决定是否合并您的工作,如果您的每次提交都是逻辑上包含和相互分离的,那么他们处理引入的工作就会容易得多。这使您(或其他人)能够有效地挑选工作 - 如果您有三个提交,其中每个提交都修改了一个函数,但它们都以某种方式耦合在一起 - 您不能只应用其中一个而不另外两个而不破坏代码库- 那么它们可能应该被压缩成一个提交。
我还使用git跟踪一些其他项目,例如emacs、wordpress等。我发现它们不太经常提交。
Git的一个好处就是你可以随时提交,然后当你想要做上游提交时,你可以使用git-rebase
将几个相关的提交合并成一个干净漂亮的提交。
git reflog
和 git reset
命令就能回到之前的状态! - Zazgit rebase
一点也不危险。如果您想在执行rebase之前有一个简单的安全保障,请使用git branch branchname.bck
创建当前HEAD的备份分支。如果您对rebase不满意,请使用git reset --hard branchname.bck
返回到先前的状态。如果您想返回到rebase版本,重新安装的提交仍然存在,但由于它们存储为未引用的对象,因此您需要git reflog
或git fsck --no-reflogs
来查找正确的SHA1值。 - sunny256你提交得越多,使用git bisect查找缺陷就会更容易。
这取决于具体情况。
我个人的做法是,像你现在正在做的一样,经常在本地提交代码,但只有当我累积了多个重要的更改时,才会将它们推送到远程仓库。
这样可以确保我保存我的工作,但也不会为其他用户造成仓库混乱。
我在添加或更改功能并成功测试后提交。或者当我要从台式机切换到笔记本电脑并想要拉取代码时,我会提交和推送。
我认为你正在做的事情是正确的。每当你有一个可用的设置,如果你弄错了什么想要回到之前的状态,那么就是提交的好时机。如果你有一个很好的设置,可以快速轻松地运行回归测试,那么提交的频率可能会相对较高。对于我来说,一周提交一次已经很幸运了。