分配了两个遥控器,origin
用于提取更改,harmeet
是生产。
我尝试git reset --hard
但是一旦我提取最新更改,状态将恢复为master | MERGING
,然后我无法将最新代码推送到harmeet
,因为Git告诉我一切都取决于日期。我不确定这里有什么问题。
答案 0 :(得分:7)
如@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
进行更改,那么您需要进行rebase或merge ,然后推,如上所述。
答案 1 :(得分:0)
我已经在我的一位同事身上检测到,如果开发人员在没有任何输入的情况下从合并提交说明中存在,则会发生master | MERGING
状态。
在此阶段,您只需发送提交并描述如下描述:
git commit -m 'merge commit'
其他答案主要集中在回滚上,但是如果要转发你的案例,你可以使用该解决方案。