git - 删除 git 历史记录中具有多个分支的特定提交?

标签 git branch commit history rebase

我知道如何使用 git rebase --interactive 从 git 历史记录中删除特定提交。

我的问题涉及更复杂的案例,其历史如下:

A--X--B--C--D
       \
         E--F

我想删除提交X。问题是,在这种情况下,有两个或多个分支的父分支(在本例中为 B)在其历史记录中有 X,因此单个 git rebase -i 不会成功(至少我不知道如何)。

是否有一种简单的方法来删除 X,或者我是否必须依靠自己对所有分支进行 rebase (可能使用 shell 脚本)?

最佳答案

不幸的是,Git 在这种情况下并不容易。首先通过删除提交 X 在 D 分支上执行交互式 rebase 。

您将拥有以下历史记录:

A--X--B
 \     \
  \      E--F
   \
     B'-C'-D'

然后您需要将 F 分支重新设置为 B' 分支:

git rebase --onto B' B F

(用 ID 替换提交名称)

最终结果是

 A--B'-C'-D'
     \
       E'--F'

关于git - 删除 git 历史记录中具有多个分支的特定提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21427060/

相关文章:

vimrc 自动提交带消息提示

git - .gitignore 中的语义 UI

git fetch 指定前缀的分支

git - 在没有 rebase 的情况下设置提交的父级

Git:如何取消获取远程分支(Github pull 请求)

git - git 分支后的# 标签是什么意思

git - 如何在正在运行的 heroku 应用程序上更新 app.json list ?

svn - 如何创建分支?

sql-server - SQL Server中的事务和@@ Error函数

linux - 如何SVN提交具有相同前缀的所有文件