ChatGPT解决这个技术问题 Extra ChatGPT

Git撤消合并尝试

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

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

我现在有:

#1 包含我的更改的文件夹

#1文件夹,其中包含我不希望来自错误存储库的文件

#1 合并冲突如composer.json、Readme.md...(通用文件)

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

如果有未提交的更改,Git 会阻止拉取或合并,你确定这是发生了什么吗?
@CharlesB它中止了合并,项目没有被喷射合并。我对 git 在 pull 之前的预防一无所知...

a
aragaer

git merge --abort 可能就是您要查找的内容。


在较旧的 git 版本中: git reset --merge
它有效,但毫无帮助地告诉你什么。执行 git status 确认。-
M
Matthieu Moy

现代 Git:

git merge --abort

年长者:

git reset --merge

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

git reset --hard

但实际上,值得注意的是,鉴于存在 MERGE_HEADgit merge --abort 仅等同于 git reset --merge。这可以在 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 在日常工作中更有用。


C
Community

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

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

状态:在适当的时候建议'git merge --abort' 我们已经在冲突的rebase期间建议'git rebase --abort'。同样,在“git merge”的冲突解决期间建议“git merge --abort”。