问题描述
有时(经常)我在代码库上进行更改,希望成为特定(尚未发布)提交的一部分。
通常我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将对提交进行重新排序,以使其与原始版本和修正版本匹配,然后将它们一起压缩到重新创建的分支中。
这是两个命令,而不是一个,但这是控制重新设置正确性的好方法。