将更改应用于现有提交,而无需进行交互式基础调整

问题描述

有时(经常)我在代码库上进行更改,希望成为特定(尚未发布)提交的一部分。

通常我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将对提交进行重新排序,以使其与原始版本和修正版本匹配,然后将它们一起压缩到重新创建的分支中。

这是两个命令,而不是一个,但这是控制重新设置正确性的好方法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...