我提交了一个开发分支,它意外地包含了一些我想要删除的更改,以及一些应该进入单独的未来提交的更改。
我正在寻找的内容相当于,好像我在当前开发分支的HEAD^
的分叉分支上进行了交互式合并,并逐行选择了更改,除了我喜欢在原始开发中执行它,修改提交历史记录的分支,以便提交作为一组干净的更改存在,而不是来自不同分支的交互式合并。
这可能吗?是否有比上述更好的替代工作流程?
此处也提出了类似的问题:Break a previous commit into multiple commits 但是提供的解决方案涉及将不同的文件从分段添加为单独的提交,而我需要修改相同文件中的更改。
答案 0 :(得分:2)
执行所需操作的一种方法是在保留更改的同时回滚提交,然后批量提交更改。
git reset --soft HEAD~1
这与git reset --hard HEAD~1
形成鲜明对比,后者会在提交时删除更改。
git add --patch filename.x
有关以交互方式添加文件部分的更多详细信息,请参阅https://stackoverflow.com/a/1085191/429758。