96

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

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

我现在有:

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

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

4

3 回答 3

186

git merge --abort可能是你正在寻找的。

于 2013-09-09T07:06:59.110 回答
20

现代 Git:

git merge --abort

年长者:

git reset --merge

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

git reset --hard

但实际上,值得注意的是,thatgit merge --abort仅相当于git reset --mergegiven that MERGE_HEADis present。这可以在 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在日常工作中更有用。

于 2015-02-07T15:06:48.243 回答
3

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

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

statusgit merge --abort:在适当的时候建议' '

我们已经git rebase --abort在有冲突的 rebase 期间建议使用 ' '。
同样,git merge --abort在“ ”的冲突解决期间建议“ git merge”。

于 2016-08-04T15:38:58.073 回答