4

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

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

我阅读了有关使用--ff-only开关进行合并的信息。这个开关可以帮助我吗?

4

3 回答 3

11

如果您有尚未推送到远程的本地更改,并且如果您从远程提取最新更新,它将创建一个合并提交。为了避免这种尝试

git pull --rebase
于 2013-05-08T05:35:21.830 回答
6

不,如果不能作为快进解决,只能失败,但合并失败并不能解决问题--ff-onlygit merge

为避免合并提交过多,请使用git rebase.

请参阅http://git-scm.com/book/en/Git-Branching-Rebase了解 rebase 的工作原理。

于 2013-05-08T04:50:37.820 回答
3

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

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

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

  3. 再次使用git pull origin master

  4. 这一次,不会有任何问题,并且您拥有来自上游的最新代码。现在,使用git stash apply

  5. 可能存在一些自动合并冲突,解决它们并使用提交并推送到服务器git push origin master

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

不用担心您的代码不会丢失,现在您又回到了第 0 步。再次按照相同的步骤操作。你已准备好出发。

于 2013-06-14T04:47:48.567 回答