Git撤消合并尝试

ewo*_*com 81 git git-pull git-merge

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

不幸的是,它开始拉动并合并到#1,而不是在vendor文件夹中创建新目录.

我现在有:

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

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

ara*_*aer 157

git merge --abort 可能就是你要找的东西.

  • 在较旧的git版本中:git reset --merge (6认同)

Mar*_*n G 17

现代Git:

git merge --abort
Run Code Online (Sandbox Code Playgroud)

老年人:

git reset --merge
Run Code Online (Sandbox Code Playgroud)

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

git reset --hard
Run Code Online (Sandbox Code Playgroud)

但实际上,值得注意的git merge --abort是,它只相当于给git reset --mergeMERGE_HEAD的存在.这可以在git help for merge命令中读取.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.
Run Code Online (Sandbox Code Playgroud)

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