Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git合并后同步2个分支_Git_Git Merge - Fatal编程技术网

在git合并后同步2个分支

在git合并后同步2个分支,git,git-merge,Git,Git Merge,如何保持2个Git分支的同步 我目前有一个master分支和一个gh-pages分支以及相应的遥控器。每当我提交时,master和gh页面分支共享相同的提交id,如下所示: git checkout master git commit -am "message" git checkout gh-pages git merge master 我的日志看起来是这样的(通过git log--graph--oneline--all--decoration实现): 在我解决的合并冲突之后,每个合并都会

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

我目前有一个
master
分支和一个
gh-pages
分支以及相应的遥控器。每当我提交时,
master
gh页面
分支共享相同的提交id,如下所示:

git checkout master
git commit -am "message"
git checkout gh-pages
git merge master
我的日志看起来是这样的(通过
git log--graph--oneline--all--decoration实现):

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

我的问题是,如何对齐这两个分支,使合并像以前一样发生在单个“图形轨迹”上


我试图根据
拉取
,但没有成功。

看起来提交
50b6dec
被添加到
gh页面
分支,同时提交
e43c01f
是在
主机
上进行的,这就是导致合并冲突的原因

因此,
gh页面
有一个提交,而
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页面
有任何
master
没有的提交,则
--ff only
标志将中止合并并出错


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

首先,确保您在
主机上

git checkout master
现在重新设定基准:

git rebase 50b6dec
你必须再次解决这场冲突。完成后,请执行以下操作:

git rebase --continue
重新基准完成后,您必须强制更新原点:

git push --force-with-lease origin master
您还必须移动
gh页面
分支。做:

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

强制性警告:由于回基会重写历史记录,这可能会对其他在此分支上工作的人造成危险/破坏。确保你能清楚地与合作伙伴交流你所做的事情。

非常感谢@ScottWeldon给出了一个伟大而彻底的答案-不仅解决了我的主要问题,而且解决了我关于清洁历史的未说出口的问题。。。