git 合并后同步 2 个分支

Syncing 2 branches after git merge

如何保持 2 个 Git 分支同步?

我目前有一个 master 分支和一个 gh-pages 分支以及各自的遥控器。每当我提交如下时,mastergh-pages 分支都共享相同的提交 ID:

git checkout master
git commit -am "message"
git checkout gh-pages
git merge master

我的日志看起来像这样(通过 git log --graph --oneline --all --decorate 实现):

在我解决了合并冲突之后,每个合并都会收到自己的提交:

我的问题是,我怎样才能对齐 2 个分支,以便像以前一样在一个分支上进行合并?'graph-track'?

我已经按照this answer尝试pull,但是没有用。

看起来提交 50b6dec 被添加到 gh-pages 分支,并且同时在 master 上提交了提交 e43c01f,这就是导致的原因合并冲突。

因此,gh-pages 有 1 次提交,而 master 没有。所以在那之后你合并的任何时候,Git 都无法进行快进合并。 (快进合并为您提供了之前的线性历史记录。)因此,解决方案是:

git checkout master
git merge gh-pages

为了防止以后再次发生这种情况,请将您的流程更改为:

git checkout master
git commit -am "message"
git checkout gh-pages
git merge --ff-only master

如果 gh-pages 有任何 master 没有的提交,--ff-only 标志将以错误中止合并。


如果你想重写历史,就好像这从未发生过一样,你也可以这样做。

首先,确保您在 master:

git checkout master

现在变基:

git rebase 50b6dec

您将不得不再次解决该冲突。完成后,执行:

git rebase --continue

变基完成后,您将不得不强制更新 origin:

git push --force-with-lease origin master

您还必须移动 gh-pages 分支。做:

git branch -f gh-pages master
git push --force-with-lease origin gh-pages

这将为您提供如下所示的历史记录:

* f218f70' (HEAD -> master) Added Scatterplot functionality to check ratings
* cb79b79' Squashed bug
* fcf0d8a' Small change
* e43c01f' Small change
* 50b6dec Small change
* a217267 Small change

强制性警告:由于 rebase 重写历史,这对于在此分支上工作的任何其他人来说可能是危险的/破坏性的。确保您清楚地与合作的任何人交流您所做的事情。