我知道如何使用 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/