23.撤销合并(未完善)

先跳过本节

恢复已提交的合并

使用 revert

此方法会创建新的 commit 来抵消对应的 merge 操作。再次合并时,文件无法合并,会提示 Already up-to-date. Git 误以为撤销的分支,所有内容我们都不需要了。

我们上个实验,将 lgnew 分支合并到了 master ,为了演示冲突,我们需要撤销合并。合并操作分为两步。

  1. 找到合并的哈希值。使用 git hist 查看;

  2. 确定撤销合并提交中的父提交编号

  3. 使用 git revert 命令撤销合并。

# 找到合并分支的提交哈希值
git hist --all
*   8588c0b 2023-05-05 | Merge branch 'lgnew' [aku]
|\
| * ead2515 2023-05-05 | Added teset2.txt (HEAD -> lgnew) [aku]
* | da0a6f8 2023-05-05 | Added teset3.txt [aku]
|/

# 查看提交详细信息
commit 8588c0b75af1f1a1cb29cb95d874631a39d30ef8
Merge: da0a6f8 ead2515
Author: aku <aku@example.com>
Date:   Fri May 5 13:39:39 2023 -0700

    Merge branch 'lgnew'

# 恢复
git revert -m 1 8588c0b
[master 32c5d64] Revert "Merge branch 'lgnew'"
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 lab/test2.txt

使用 git revert 命令来撤销先前的合并提交时,需要指定要撤销的父提交。-m 选项用于指定要撤销的合并提交中的父提交编号。1-m 选项后面的参数,表示要使用的父提交编号。

合并提交的哈希值是 8588c0b,这个合并提交包含了两个父提交 Merge: da0a6f8 ead2515

  • ead2515 2023-05-05 | Added teset2.txt (HEAD -> lgnew) [aku]

  • da0a6f8 2023-05-05 | Added teset3.txt [aku]

通过 -m 选项指定的父提交序号,可以告诉 Git 要撤销哪个父提交。使用 -m 1 表示要撤销的父提交是序号为 1 的父提交,即父提交 da0a6f8


此方法会创建新的 commit 来抵消对应的 merge 操作。再次合并时,文件无法合并,会提示 Already up-to-date. Git 误以为这个分支的东西都是不想要的。

Last updated