如何解决git中的分歧?

Posted

技术标签:

【中文标题】如何解决git中的分歧?【英文标题】:how to resolve diverge in git? 【发布时间】:2020-08-22 03:37:23 【问题描述】:

我在解决工作副本上的问题时遇到了麻烦: 早些时候我拉了它并自动合并了几个文件,然后它们出现在我没有提交的暂存区域中。我现在通过git checkout -- my/file 恢复了文件中的更改,当天晚些时候,我想再拉一次,但它不能,我收到如下错误:

$ git pull
error: You have not concluded your merge (MERGE_HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.

我该如何解决这种情况?我不想在这个分支上提交任何东西!我也得到:

$ git status
On branch dev
Your branch and 'origin/dev' have diverged,
and have 3 and 4 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

【问题讨论】:

git pull 表示运行两个 Git 命令:首先运行git fetch,然后运行第二个 Git 命令。 second 命令默认为git merge。如果您之前运行过git pull,它可能已经运行过git merge(取决于您是否更改了git pull 的第二个命令)。这可能是您仍处于冲突合并中的原因。您必须完成此合并或中止它,然后才能执行另一个 git pull (你可能最好通过一个好的 Git 教程来学习。众所周知,Git 对初学者是敌对的,而你现在正处于这些事情的中间。) 【参考方案1】:

首先,git merge --quit (Git 2.23+) 应该有助于摆脱正在进行的合并。

其次,git pull --rebase 应该有助于在更新的 origin/dev 之上重放您的本地提交。

然后你就可以推送了。

OP BitFreak 使其工作 (see comment) 与:

git push --abort
git pull --rebase

【讨论】:

正确的命令是git merge --abortgit pull --rebase 按要求解决了问题!太好了,谢谢! @BitFreak 太好了。我已将您的评论包含在答案中以提高知名度。

以上是关于如何解决git中的分歧?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决:“无法打开 'git-upload-pack'” Eclipse 中的错误?

如何解决Git中的合并冲突

如何解决请求的 URL 返回错误:git 存储库中的 403

如何通过获取当前分支中的版本来自动解决 Git 冲突?

git如何解决冲突?

windows下git中文乱码如何解决?