如何解决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 --abort
,git pull --rebase
按要求解决了问题!太好了,谢谢!
@BitFreak 太好了。我已将您的评论包含在答案中以提高知名度。以上是关于如何解决git中的分歧?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决:“无法打开 'git-upload-pack'” Eclipse 中的错误?