【问题标题】:Git undo merge attemptGit撤消合并尝试
【发布时间】:2013-09-12 15:12:18
【问题描述】:

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

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

现在我有:

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

我想在不丢失我对文件夹 #1 所做的任何更改的情况下“撤消”最后一次 git pull。我该怎么做?

【问题讨论】:

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

标签: git git-merge git-pull


【解决方案1】:

git merge --abort 可能就是您要找的。​​p>

【讨论】:

  • 在旧 git 版本中:git reset --merge
  • 它有效,但毫无帮助地告诉你什么。做一个git status 确认。-
【解决方案2】:

现代 Git:

git merge --abort

老年人:

git reset --merge

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

git reset --hard

但实际上,值得注意的是,git merge --abort 仅等效于 git reset --merge,因为存在 MERGE_HEAD。这可以在合并命令的 git 帮助中阅读。

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 在日常工作中更有用。

【讨论】:

    【解决方案3】:

    使用 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 日)

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2016-06-02
      • 2019-08-29
      • 2013-06-07
      • 2020-08-23
      • 2011-08-22
      • 2021-06-26
      • 2014-09-23
      • 2011-01-24
      相关资源
      最近更新 更多