在 Git 中,我可以使用交互式 rebase 来重写历史记录,这很棒,因为在我的功能分支中,当我探索不同的重构和完成它的方法时,我使用部分工作代码进行了大量提交。
在将分支重新定位或合并到 master 之前,我想将很多提交压缩在一起。
有些按从第一个(顶部)到底部(最后一个)的顺序组成提交
1. Initial commit on feature branch "Automatic coffee maker UI"
2. Add hot chocolate as product
3. Add tea as product. Products are now generic
4. Create in memory data store for adapter tests
5. Cry because I can't get entity framework to create a composite key. Integration tests broken.
6. Implemented composite key!!
7. All tests green and feature done!
假设我想保留提交 3、4 和 7。
使用 rebase 我想“压缩”提交
- 1 和 2 进入 3。
- 4 次住宿
- 5和6进入7
理想情况下,我会在交互式变基中
1. squash
2. squash
3. pick (contains the work of 1 & 2)
4. pick
5. squash
6. squash
7. pick (contains the work of 5 & 6)
但这是倒退的,因为 squash 将提交与之前的提交合并。我不知道如何使它向前挤压。
我是不是很难,我应该接受这行不通(我宁愿让它工作),还是有办法做到这一点?
我正在调用这个命令
git checkout My-feature-branch
git rebase master -i
然后我正在编辑出现的提交列表,并尝试通过保存文件并编辑编辑器来完成它,这通常对我有用。