如何在提交之间进行重新定位:
假设我想在init和commit 3之间进行rebase(将这些提交压缩在一起)
让我说我有
commit 5
commit 4
commit 3
commit 2
commit 1
commit init
如果我这样做
git rebase -i commit 3
我明白了:
pick commit 3
pick commit 4
pick commit 5
然后当我做
squash commit 3
pick commit 4
pick commit 5
我执行动作,我明白了:
commit 3
commit 2
commit 1
commit init
而不是我想要的。
如何压缩提交init< ---->提交3,而不是提交3< -----> commit 5
提前致谢。
Jenia。
答案 0 :(得分:4)
待办事项
git rebase -i --root
Git会让你进入一个带
的编辑器pick commitinit
pick commit2
pick commit3
pick commit4
pick commit5
然后将其更改为
pick commitinit
squash commit2
squash commit3
pick commit4
pick commit5
答案 1 :(得分:1)
您不会使用您显示的命令获得您建议的结果,因为您最终仍应提交提交4和5。要将它们全部压缩在一起,您必须将pick
替换为squash
es,而不仅仅是用于提交3的那个。
为了在交互式rebase中将一个提交压缩到另一个提交,你必须在之前从你想要压扁的点开始的rebase,这样列表如下所示:
pick commit 2
pick commit 3
pick commit 4
pick commit 5
现在,您可以在第二行用pick
替换squash
,并将提交2和3合并(转换为一个新的,不同的提交)。 (请注意,提交4和5也将被复制到新的不同提交中,具有相同的更改但父ID不同。)
如果你想将提交2压缩到提交1中,你必须退一步。
基本上,您必须从感兴趣点之前的点开始。如果兴趣点在开始时是正确的,那么这是一个问题 - 因此交互式rebase允许您指定--root
。