有时(非常频繁(我会对代码库进行更改,希望它成为特定(尚未发布(提交的一部分。
通常我stash
我的更改,rebase -i ID^
提交stash pop
和--amend
那些更改和rebase --continue
。
当有比我想要的commit --amend
更多的修改时,问题就会出现——我首先必须消除这些修改,例如创建一个临时提交。。
有没有办法在一个(非交互式(步骤中完成所有这些?类似的东西
git commit --amend --rebase ID [file1, file2, ..]
或者这一切真的有充分的理由吗?
恐怕没有git命令可以让你这么做,因为git的工作原理不同,不能在不影响ID^的情况下更改提交ID^^的历史记录。这就是为什么你只能修改你最后的承诺。
我的建议是使用--fixup
选项,让您创建一个提交来修补旧的提交:
git commit --fixup=oldCommitHash
然后只需要这个命令:
git rebase branchDesired -i --autosquash
Git将对提交进行重新排序,以匹配原始和修复,然后将它们压缩在重新基于的分支中。
这是两个命令而不是一个,但这是控制rebase正确性的好方法。