其他人可以更好地改写这个问题,但这是我想做的:
我一直致力于长期的主要重构分支 B。我一直在定期 merge master,现在分支 B 比 master 领先约 200 次提交。我现在准备发送 pull 请求,但我想稍微清理一下我的提交历史记录。基本上我想将我所有的 ~200 次提交压缩为 3 次提交:
- 提交 1 = 所有被删除的文件
- 提交 2 = 所有新添加的文件
- 提交 3 = 其他所有内容,即所有移动/编辑的文件
而且,为了不搞砸,我想在我自己的分支 B 之外的一个单独分支上重写这个历史记录,并将该分支作为我的 pull 请求发送。
在 git 中实现此目的的最简单方法是什么?
最佳答案
假设您要 merge 到 master
:
创建并 check out 一个新分支:
git checkout -b going-to-squash
rebase 到 master
git rebase --squash master
重置到master分支
git reset master
现在,您的整个压缩分支将处于未提交状态。
现在创建您的新提交。
我会在这一步中使用图形用户界面,但它在命令行上完全可行。
关于Git 将功能分支的历史更改为新分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12720088/