如何摆脱git中的Merge提交

时间:2013-05-08 04:42:37

标签: git merge git-commit

我有一个由超过1个人共享的存储库所以我经常看到提交历史记录中有很多合并提交。我想摆脱它们,使我的提交历史看起来更清洁。

我们应该遵循哪些做法来避免这些合并提交?它可行吗?

我读到了使用--ff-only开关合并的问题。这个开关可以帮助我吗?

3 个答案:

答案 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)

我还有一种方法可以避免合并提交。这就是我现在所关注的。

  1. 在进行任何提交之前,请始终从上游提取最新代码。

  2. 有时,可能会说您提交更改/存储它们并且不会让您获得最新提交。这是因为您编辑了一些文件,并且还在上游的一个提交中进行了编辑。因此,请使用git stash

  3. 隐藏更改
  4. 再次使用git pull origin master

  5. 这次,没有任何问题,你有来自上游的最新代码。现在,使用git stash apply

  6. 从藏匿处重新获取代码
  7. 可能存在一些automerge冲突,解决它们并使用git push origin master进行提交并推送到服务器

  8. 可能存在这样的情况:在合并和提交过程中,其他人也在上游/服务器上进行提交。在这种情况下,您的推送将失败并要求您再次从服务器/上游提取代码。如果你立即拉,你将成为合并提交的受害者。所以要避免使用git reset head^

    不要担心您的代码不会丢失,现在您又回到步骤0.再次执行相同的步骤。你很高兴。