Git_Learning
  • Git/
    • 01.初识Git
    • 02.Git的特性
    • 03.使用Git的方式
    • 04.安装Git
    • 05.初始配置
    • 06.创建本地仓库
    • 07.更新文件并提交
    • 08.查看提交历史
    • 09.设置别名
    • 10.切换版本
    • 11.标签操作
    • 12.撤销修改-本地已保存状态
    • 13.撤销修改-已暂存状态下
    • 14.还原修改-已提交状态下
    • 15.从分支中删除提交
    • 16.修改提交内容
    • 17.移动文件
    • 18.忽略文件
    • 19.了解Git对象存储机制
    • 20.创建分支
    • 21.合并分支
    • 22.合并冲突
    • 23.撤销合并(未完善)
    • 24.变基和合并
    • 25.使用变基合并分支
    • 26.合并到主分支
    • 27.多存储库
    • 28.从原始仓库获取更改
    • 29.合并已经拉取的更改
    • 30.拉取并合并
    • 31.创建一个跟踪分支
    • 32.裸仓库
    • 33.推送变更
    • 34.拉取共享变更
    • 35.托管Git仓库
    • 36.常见问题
  • GItHub/
    • 如何向他人的项目提交内容
  • README
Powered by GitBook
On this page
  • 恢复已提交的合并
  • 使用 revert
  1. Git/

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 误以为这个分支的东西都是不想要的。

Previous22.合并冲突Next24.变基和合并

Last updated 2 years ago