分配了两个remotes,origin用于提取更改,harmeet用于生产。
我试过git reset --hard,但是一旦我拉出最新的修改,状态就会恢复到master | MERGING,然后我就不能把最新的代码推送到harmeet上,因为Git会告诉我一切都是最新的。我不知道这里出了什么问题。

发布于 2016-10-06 01:13:51
正如在@Holger's comment中提到的,您可以执行git merge --abort来中止合并。但是,您可能不想这样做。之所以会发生合并,是因为远程(origin)有本地没有的更改。您的历史记录可能如下所示:
*--*--A--B--C [master, harmeet/master]
\
D--E [origin/master](请注意,master == harmeet/master。(我将立即讨论这一点。)
有三种解决方案:合并、重定基址或强制更新。
合并
最简单的解决方案就是完成合并。为此,请在编辑器中解决任何冲突,使用git add .暂存,并使用git commit提交。您的历史记录将如下所示:
*--*--A--B---C [harmeet/master]
\ \
\ F [master]
\ /
D--E [origin/master]然后你可以用git push origin master来更新origin,用git push harmeet master来更新harmeet。
重设基地
如果要保留线性历史记录,请中止合并,然后执行以下操作:
git pull --rebase(如果存在任何冲突,请解决它们并继续使用git rebase --continue。)
您的历史记录将如下所示:
*--*--A--B--C [harmeet/master]
\
D--E [origin/master]
\
B'--C' [master]然后,您可以使用以下命令更新origin:
git push origin master并使用以下命令强制更新harmeet:
git push --force-with-lease harmeet master您的最终历史记录将是:
*--*--A--D--E--B'--C' [master, origin/master, harmeet/master]强制更新
如果您确实不想从origin中进行更改,您可以这样做:
git push --force-with-lease origin master你的历史会是这样的:
*--*--A--B--C [master, harmeet/master, origin/master]如果Git告诉你harmeet/master是最新的,那么它就和你的本地master处于同一提交状态,除非在你上次获取后有人推入了harmeet/master。
如果您的目标是将更改从origin (提交D和E)转移到harmeet,那么您将需要重新基址或合并,然后推送,如上所述。
发布于 2017-12-15 19:29:04
我在我的一个同事的机器上检测到,如果developer存在于merge commit description中而没有任何输入,就会发生master | MERGING状态。
在此阶段,您只需发送提交并按如下方式描述描述:
git commit -m 'merge commit'其他答案主要集中在回滚上,但是如果您的案例要转发,您可以使用该解决方案。
https://stackoverflow.com/questions/39878955
复制相似问题