|
下面的方法可行,假设你想动的分支是 master ,先在当前分支上创建一个新分支 master2
1. 先 checkout master ,然后执行 git reset --hard c200 把 master 给 reset 到 c200
2. 然后执行 git rebase -i --root ,在交互模式里将除了初始的第一个 commit 之外的 commit 都选择 squash ,初始 commit 可以选择 pick 或 reword 。结束出你的 master 分支就只有 1 个提交,它压缩了 c200 的提交。记下现在新的 master 的提交 id 为 master-new-commit-it
3. checkout master2 分支,然后执行 git rebase -i master-new-commit-it 。在交互里把 c200 即之前的所有 commit 全 drop ,剩下 commit 全保留默认的 pick 。然后就结束了
第三步可能会有少许的冲突,但基本上没多少问题 |