将更改应用于现有提交,而不进行交互式重定基准



有时(非常频繁(我会对代码库进行更改,希望它成为特定(尚未发布(提交的一部分。

通常我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正确性的好方法。

最新更新