我有一个由超过1个人共享的存储库所以我经常看到提交历史记录中有很多合并提交。我想摆脱它们,使我的提交历史看起来更清洁。
我们应该遵循哪些做法来避免这些合并提交?它可行吗?
我读到了使用--ff-only
开关合并的问题。这个开关可以帮助我吗?
答案 0 :(得分:8)
如果您的本地更改尚未推送到远程,并且从远程提取最新更新,则会创建合并提交。为避免这种情况,请尝试
git pull --rebase
答案 1 :(得分:6)
不,--ff-only
只能使git merge
失败,如果无法解析为快进,但合并失败并不能解决问题。
为避免合并提交过多,请使用git rebase
。
请参阅http://git-scm.com/book/en/Git-Branching-Rebasing了解rebase的工作原理。
答案 2 :(得分:3)
我还有一种方法可以避免合并提交。这就是我现在所关注的。
在进行任何提交之前,请始终从上游提取最新代码。
有时,可能会说您提交更改/存储它们并且不会让您获得最新提交。这是因为您编辑了一些文件,并且还在上游的一个提交中进行了编辑。因此,请使用git stash
再次使用git pull origin master
这次,没有任何问题,你有来自上游的最新代码。现在,使用git stash apply
可能存在一些automerge冲突,解决它们并使用git push origin master
进行提交并推送到服务器
可能存在这样的情况:在合并和提交过程中,其他人也在上游/服务器上进行提交。在这种情况下,您的推送将失败并要求您再次从服务器/上游提取代码。如果你立即拉,你将成为合并提交的受害者。所以要避免使用git reset head^
不要担心您的代码不会丢失,现在您又回到步骤0.再次执行相同的步骤。你很高兴。