Git撤消合并尝试


88

我有工作目录(#1),其中有供应商目录(#2)。我想在没有作曲者的情况下手动拉出一个依赖项(npm / gem的php版本)。当我决定要在#2中更新库时,我在#1中工作,还没有保存/提交更改。我导航到供应商/我的名字,并做了git pull存储库。

不幸的是,它开始拉并合并到#1,而不是在供应商文件夹中创建新目录。

我现在有:

  • #1包含我的更改的文件夹
  • #1包含我不想要来自错误存储库的文件的文件夹
  • #1合并冲突,例如composer.json,Readme.md ...(通用文件)

我想“撤消”最后一次git pull,而又不丢失对文件夹#1所做的任何更改。我怎样才能做到这一点?


如果有未提交的更改,Git会阻止拉取或合并,您确定这就是发生的事情吗?
2013年

1
@CharlesB中止合并,项目不进行喷气合并。我对git防止拉之前一无所知...
ewooycom 2013年

Answers:



17

现代Git:

git merge --abort

较旧:

git reset --merge

老式(警告:将丢弃所有本地更改):

git reset --hard

但实际上,值得注意的是,它git merge --abort仅等同于存在的git reset --merge给定条件MERGE_HEAD。可以在git help for merge命令中阅读。

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

合并失败后,如果MERGE_HEAD没有合并失败,则可以(git reset --merge但不一定)撤消失败的合并git merge --abort因此它们不仅是同一事物的新旧语法。就个人而言,我发现git reset --merge在日常工作中更有用。


2

使用Git 2.10(2016年第三季度),您将知道该怎么做,因为git status它将建议git merge --abort选项。

参见Matthieu Moy()的commit b0a61ab(2016年7月21日(由Junio C Hamano合并--commit 5a2f4d3中,2016年8月3日)moy
gitster

status: 建议 'git merge --abort适当时 '

git rebase --abort在冲突的基础上我们已经建议' '。
同样,git merge --abort在解决“ ”时建议“ git merge”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.