我想要合并两个提交 - 这两个提交之间有一些提交。这些提交不会更改由提交1和提交6编辑的文件。这些提交还没有被推送。
这是否可能?
这是否可能?
f68ffb5 commit 6
...
d294fac commit 1
# make sure you're on the proper branch
git checkout branch-with-commits
^
来引用“之前”的记录。# rebase to the commit before commit 1
git rebase -i d294fac^
一个编辑器窗口会打开,它很可能是vim,如果你不熟悉它,可以查看如何退出vim编辑器?
在这个列表中,提交是按相反顺序排列的(与git log
不同):从最早的到最新的。
按以下方式重新排列行:
pick d294fac commit 1
squash f68ffb5 commit 6
pick <sha1> commit 2
pick <sha1> commit 3
pick <sha1> commit 4
pick <sha1> commit 5
# and if there are commits later that commit 6:
pick <sha1> commit 7
...
保存文档。Git现在为新提交1&6的消息打开一个新的编辑器窗口。也保存它。重派完成。
正如我在评论中提到的那样。您可以执行以下操作:
git rebase -i
然后重新排序提交,例如 162345
或 612345
,然后将它们压缩在一起以获得类似于 (1+6)2345
的历史记录。
如果提交1在HEAD之前6个提交,你可以使用git rebase。
git rebase -i HEAD~6
一个git窗口将会打开,其中包含6个提交并且解释了选项。您希望合并第6个提交和第1个提交,因此需要将第1个提交压缩到第6个提交中:
pick f68ffb5 commit 6
...
squash d294fac commit 1
另一个Git窗口将为您打开,以编辑提交信息。
git rebase -i
命令来重新排序提交,然后将第1个提交和第6个提交合并。但是,如果没有更多的信息,这只是一种猜测。 - ckruczekrebase -i
+ 重新排序到162345 + 合并6on1。你能把这个评论改写成一个回答吗? - quetzalcoatl