0


如何使用 Git Revert 撤销合并提交

** 在使用 Git 进行版本控制时,合并分支是一个常见的操作。然而,有时候我们可能需要撤销之前的合并操作。本文将详细介绍如何使用

git revert

撤销合并提交,即使在合并提交之后还有其他提交。**

场景描述:

假设你有两个远程分支

main

feature

feature

分支上有一些提交:

A -> B -> C (main)
 \
  D -> E (feature)

你已经将

feature

分支合并到

main

分支,并将合并后的

main

分支推送到远程仓库,创建了一个合并提交

M

。之后,

main

分支上又有一些新的提交

F

G

A -> B -> C -> M -> F -> G (main)
 \           /
  D -> E (feature)

现在你想撤销合并提交

M

步骤:

1. 切换到 main 分支

首先,确保你当前在 main 分支上:

git checkout main

2. 拉取最新的远程分支
确保你有最新的远程分支数据:

git pull origin main

3. 撤销合并提交 M(即hash版本号)
使用 git revert 命令撤销合并提交 M。由于合并提交有多个父提交,需要指定主分支(通常是第一个父提交)作为基准来撤销合并。这里的 -m 1 表示选择 M 的第一个父提交(即 C)作为基准来撤销合并。

git revert -m 1 M

#或者带上提交信息,步骤4就不会出现
git revert -m 1 M -m "Revert merge of feature branch to fix issues"

4. 提交撤销操作
git revert 会打开一个编辑器让你输入撤销提交的信息,默认信息通常已经包含了撤销操作的描述。保存并关闭编辑器后,撤销提交就会被创建。

5. 推送撤销提交到远程仓库
将撤销提交推送到远程仓库,确保其他开发者也能看到撤销操作:

git push origin main

撤销结果

撤销合并提交

M

后,

main

分支的提交历史将变成:

git log --oneline --graph
A -> B -> C -> M -> F -> G -> R (main)
 \           /
  D -> E (feature)
  • R 是一个新的提交,内容是撤销合并提交 M 的更改。
  • FG 仍然是 main 分支的一部分,不受撤销操作的影响。

验证

使用

git log

命令来验证撤销操作的结果:

* 1234567 Revert "Merge branch 'feature' into main"
* 6789012 Commit G
* 5678901 Commit F
* abc1234 Merge branch 'feature' into main
|\
| * 567890e Commit E
| * 456789a Commit D
* cdef012 Commit C
* bdef012 Commit B
* adef012 Commit A

详细解释:
-m 1 选项:-m 1 表示选择合并提交 M 的第一个父提交作为基准。在合并提交中,第一个父提交通常是主分支(main),第二个父提交通常是被合并的分支(feature)。
撤销合并:git revert -m 1 M 会创建一个新的提交 R,这个提交的内容是撤销 M 引入的更改。R 提交会撤销 D 和 E 的更改,使 main 分支回到合并前的状态。
不影响 M 之后的提交:撤销 M 只会撤销 M 引入的更改,不会影响 M 之后的提交 F 和 G。

总结

  • 撤销远程分支合并:使用 git revert -m 1 <merge-commit-hash> 撤销合并提交 M
  • 拉取最新远程分支:确保在撤销操作前拉取最新的远程分支,以避免冲突。
  • 推送撤销提交:将撤销提交推送到远程仓库,确保其他开发者也能看到撤销操作。
  • 不影响 M 之后的提交:撤销 M 只会撤销 M 引入的更改,不会影响 M 之后的提交。

通过这些步骤,你可以有效地撤销远程分支的合并操作,即使在合并提交之后还有其他提交。

标签: git 经验分享 后端

本文转载自: https://blog.csdn.net/z275598733/article/details/143106356
版权归原作者 与遨游于天地 所有, 如有侵权,请联系我们删除。

“如何使用 Git Revert 撤销合并提交”的评论:

还没有评论