Git坚持主人|并构

时间:2016-10-05 16:08:59

标签: git

分配了两个遥控器,origin用于提取更改,harmeet是生产。

我尝试git reset --hard但是一旦我提取最新更改,状态将恢复为master | MERGING,然后我无法将最新代码推送到harmeet,因为Git告诉我一切都取决于日期。我不确定这里有什么问题。

Git Status

2 个答案:

答案 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更新origingit 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(提交DE)到harmeet进行更改,那么您需要进行rebase或merge ,然后推,如上所述。

答案 1 :(得分:0)

我已经在我的一位同事身上检测到,如果开发人员在没有任何输入的情况下从合并提交说明中存在,则会发生master | MERGING状态。

在此阶段,您只需发送提交并描述如下描述:

git commit -m 'merge commit'

其他答案主要集中在回滚上,但是如果要转发你的案例,你可以使用该解决方案。