Git 如何将最新的提交压缩为特定的提交(不是上一次提交)?

Git 如何将最新的提交压缩为特定的提交(不是上一次提交)?,git,git-squash,Git,Git Squash,假设我正在尝试重新设置当前分支的基础,该分支在主分支上有更改:- And am presented with an interactive window like this with all the new commits listed: pick A Commit message A pick B Commit message B pick C Commit message C pick D Commit message D pick E Commit message E 我想把E压缩到

假设我正在尝试重新设置当前分支的基础,该分支在主分支上有更改:-


And am presented with an interactive window like this with all the new commits listed:

pick A Commit message A
pick B Commit message B
pick C Commit message C
pick D Commit message D
pick E Commit message E
我想把E压缩到C,而不是之前的提交D,有没有办法呢

因为如果我这样做

pick A Commit message A
pick B Commit message B
pick C Commit message C
pick D Commit message D
squash E Commit message E

它总是将E压缩到D,但我想将E压缩到以前的某个提交中,我可以选择C、B或A。

您可以在“交互式窗口”中以任何方式重新排序行,重新排序将重新排序相应的提交。例如,可以将提交C的行移动到提交E的行上方:

pick A Commit message A
pick B Commit message B
pick D Commit message D
pick C Commit message C
squash E Commit message E
现在,生成的历史将按照该顺序对提交A、B和D进行更改,然后将提交C和E的更改压缩为一个新的提交

或者,移动提交E的行,使其位于提交C的行下方:

pick A Commit message A
pick B Commit message B
pick C Commit message C
squash E Commit message E
pick D Commit message D

这将保持提交A和B的更改顺序,然后使用C和E的组合更改创建一个新的提交,最后使用与D相同的更改创建一个新的提交。

您可以在“交互式窗口”中以任何方式重新排序行,并且重定基将重新排序相应的提交。例如,可以将提交C的行移动到提交E的行上方:

pick A Commit message A
pick B Commit message B
pick D Commit message D
pick C Commit message C
squash E Commit message E
现在,生成的历史将按照该顺序对提交A、B和D进行更改,然后将提交C和E的更改压缩为一个新的提交

或者,移动提交E的行,使其位于提交C的行下方:

pick A Commit message A
pick B Commit message B
pick C Commit message C
squash E Commit message E
pick D Commit message D

这将保持提交A和B的更改顺序,然后使用C和E的组合更改创建一个新的提交,最后使用与D相同的更改创建一个新的提交。

回答得好!我不知道你可以改变顺序,游戏规则改变者。回答得好!我不知道你可以改变顺序,游戏规则改变者。