假设我有一个分支 case-xyz,我在其中为案例 #xyz 工作,“实现 Hello World”。
在开发过程中,我添加了调试输出等,这不应该是最终提交的一部分。
我可以执行以下操作:
- 分支到 case-xyz-debug 并仅在此处提交调试代码。
- 偶尔将 case-xyz-debug 合并到 case-xyz 中。
- 在 case-xyz 中提交应该进入最终补丁的内容。
- 最后,“反向合并”case-xyz-debug,即删除来自该分支的所有更改,独立于它们何时合并到case-xyz。换句话说,这应该相当于从 case-xyz-debug 还原所有合并。
我知道在revert一个merge commit的时候,Git并没有忘记merge,即它仍然认为你已经合并了,所以只能通过revert的revert来重新merge。因此,只需删除最初在 case-xyz-debug 中提交的所有更改,如何记录是无关紧要的。但是,如果我也可以执行以下操作,那就太好了:
- git checkout case-xyz
- git checkout case-xyz-done
- git "反向合并" case-xyz-debug
因为我可能想继续开发/调试:
- git checkout case-xyz
- 更改文件
- git commit -am “哎呀,忘记了什么”
- git checkout case-xyz-really-done
- git "反向合并" case-xyz-debug
我希望我的意图很明确。如果这可以实现,但以完全不同的方式,我也会很高兴。