假设我已经推送了两个提交,我想要压缩它们。
不做git rebase -i HEAD~2
,我不小心做了git rebase -i HEAD~3
这里的最后第三次提交来自其他人,但它会显示在我的PR中,并说"其他作者和R11G提交"。如何避免这种情况?
如何挽回这个失误?有任何命令可以逆转或修复这个问题吗?
这似乎不是git
的问题,但无论您使用的是什么源代码管理工具,都可以创建PR。
我原来的分支(与--format=fuller
):
commit 18cabfe932ad37e210bebf14c3c5084f65629962 (HEAD -> master)
Author: Sam Varshavchik <mrsam@courier-mta.com>
AuthorDate: Thu Jul 14 20:09:48 2022 -0400
Commit: Sam Varshavchik <mrsam@courier-mta.com>
CommitDate: Thu Jul 14 20:09:48 2022 -0400
Commit 3
commit 4a12c468a08fcb17945ca08aa2032594f6988724
Author: Sam Varshavchik <mrsam@courier-mta.com>
AuthorDate: Thu Jul 14 20:09:24 2022 -0400
Commit: Sam Varshavchik <mrsam@courier-mta.com>
CommitDate: Thu Jul 14 20:09:24 2022 -0400
Commit 2
commit ff0b2a68da3c22179279ef2b009616f659f4ffd1
Author: Sam Varshavchik <mrsam@courier-mta.com>
AuthorDate: Thu Jul 14 20:09:02 2022 -0400
Commit: Sam Varshavchik <mrsam@courier-mta.com>
CommitDate: Thu Jul 14 20:09:02 2022 -0400
Commit 1
commit 5f9cf33419421f45313ccec60dad105337de4d6f
Author: Sam Varshavchik <mrsam@courier-mta.com>
AuthorDate: Thu Jul 14 20:08:31 2022 -0400
Commit: Sam Varshavchik <mrsam@courier-mta.com>
CommitDate: Thu Jul 14 20:08:31 2022 -0400
Initial commit
执行rebase后,只压缩最后两次提交:
$ history
...
1003 git rebase -i HEAD~3
1004 git log --format=fuller
1005 history
最终结果:
commit 544d3deeeea682b195f64421b8ef33b2e91043da (HEAD -> master)
Author: Sam Varshavchik <mrsam@courier-mta.com>
AuthorDate: Thu Jul 14 20:09:24 2022 -0400
Commit: Sam Varshavchik <mrsam@courier-mta.com>
CommitDate: Thu Jul 14 20:10:26 2022 -0400
Commit 2
Commit 3
commit ff0b2a68da3c22179279ef2b009616f659f4ffd1
Author: Sam Varshavchik <mrsam@courier-mta.com>
AuthorDate: Thu Jul 14 20:09:02 2022 -0400
Commit: Sam Varshavchik <mrsam@courier-mta.com>
CommitDate: Thu Jul 14 20:09:02 2022 -0400
Commit 1
commit 5f9cf33419421f45313ccec60dad105337de4d6f
Author: Sam Varshavchik <mrsam@courier-mta.com>
AuthorDate: Thu Jul 14 20:08:31 2022 -0400
Commit: Sam Varshavchik <mrsam@courier-mta.com>
CommitDate: Thu Jul 14 20:08:31 2022 -0400
Initial commit
在这里可以看到"提交1",第三古老的提交,是完全不变,仍然有相同的哈希。
git rebase
是聪明的。如果它看到拉入rebase的初始提交集没有被修改,无论如何,rebase只从第一个修改的提交开始。
你需要看看你的SCM,以确定为什么它在你的PR中包含另一个提交。
如果你不能弄清楚为什么你的SCM正在做它正在做的事情,以及该怎么做:注意你幸存的提交的哈希,取消分支,创建一个新的分支,cherry-pick
孤儿提交,并尝试做另一个PR。