我正在尝试清理旧的存储库,这可能是我在学习如何使用Git时创建的第一个存储库。看一下master
的历史,我注意到了这一点:
R -- P -- A -- B -- C -- D -- M -- E
\ /
A' --- B' --- C' --- D'
其中A'
,B'
,...与A
,B
完全相同,...
M
是合并提交,E
不是最后一个
我的存储库中有两个分支(master
和develop
),master
是唯一受影响的(develop
之后已创建)。
我想删除那些重复提交,从P
(不包括)到M
,导致类似这样的内容:
R -- P -- A -- B -- C -- D -- E
我怎么能实现这个目标?
答案 0 :(得分:0)
似乎M是一个分支与同一分支的重新定义版本的合并
我会做以下事情:
git checkout master
git rebase --onto D M
这个命令会将所有提交从M改为主分支提示而不是D(从历史中删除M),因为A' - B' - C' - D'是可达的,因为M,这个提交将被“删除”历史和历史将以您的寻找方式结束:
[R - P ----- -----甲----乙Ç---- ---- dË
Rebase是一个强大的命令,你可以用它做出惊人的事情:)