git 合并后同步 2 个分支
Syncing 2 branches after git merge
如何保持 2 个 Git 分支同步?
我目前有一个 master
分支和一个 gh-pages
分支以及各自的遥控器。每当我提交如下时,master
和 gh-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 重写历史,这对于在此分支上工作的任何其他人来说可能是危险的/破坏性的。确保您清楚地与合作的任何人交流您所做的事情。
如何保持 2 个 Git 分支同步?
我目前有一个 master
分支和一个 gh-pages
分支以及各自的遥控器。每当我提交如下时,master
和 gh-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 重写历史,这对于在此分支上工作的任何其他人来说可能是危险的/破坏性的。确保您清楚地与合作的任何人交流您所做的事情。