git rebase -i HEAD~N returns 超过 N 次提交
git rebase -i HEAD~N returns more than N commits
这是我的 git 命令:
git rebase -i HEAD~2
我希望看到 2 个最近的提交,但我看到的是:
我还想提一下,虽然我一直在尝试压缩某些提交,但我一直 运行 合并冲突。我感觉这些问题可能是相关的。
我有点 git 菜鸟所以任何帮助将不胜感激。
git log --graph --all --oneline --decorate
:
提交链:
合并提交有多个 parent 提交。 ~
表示提交的 第一次 parent。那是图表的左侧。 ~
仅跟在第一个 parents 之后。 HEAD~2
要求第一个 grandparent.
~
是跳过合并分支浏览历史的好方法。
* HEAD
|\
| *
| *
| *
| *
* | HEAD~1
|/
* HEAD~2
|\
| *
| *
|/
* HEAD~3
git rebase -i HEAD~2
实际上是 git rebase -i HEAD~2..HEAD
,因此您将获得从 HEAD
可访问的所有提交,不包括从 HEAD~2
可访问的所有提交。这意味着 HEAD
、HEAD~1
以及侧分支中的所有提交。
^
用于选择parents。 HEAD^
是第一个parent,和HEAD~
一样。 HEAD^2
选择第二个 parent,这是分支中的第一个提交。
^
和 ~
可以链接。如果你只想在侧分支上进行两次提交,那就是 git rebase -i HEAD^2~2
。 HEAD^2
选择 HEAD 的第二个 parent。所以HEAD^2~2
是HEAD的第二个parent的第一个grandparent。有插图就更简单了。
* HEAD
|\
| * HEAD^2
| * HEAD^2~ also HEAD^2^
| * HEAD^2~2 also HEAD^2^^
| * HEAD^2~3 also HEAD^2^^^
* | HEAD~1 also HEAD^1
|/
* HEAD~2 also HEAD^1~
|\
| *
| *
|/
* HEAD~3
困惑?没关系。与其搞乱这一切,通常更容易变基回到您合并的分支并将额外的提交保留为 pick
.
git rebase -i main
有关更多信息,请参阅 gitrevisions。
这是我的 git 命令:
git rebase -i HEAD~2
我希望看到 2 个最近的提交,但我看到的是:
我还想提一下,虽然我一直在尝试压缩某些提交,但我一直 运行 合并冲突。我感觉这些问题可能是相关的。
我有点 git 菜鸟所以任何帮助将不胜感激。
git log --graph --all --oneline --decorate
:
提交链:
合并提交有多个 parent 提交。 ~
表示提交的 第一次 parent。那是图表的左侧。 ~
仅跟在第一个 parents 之后。 HEAD~2
要求第一个 grandparent.
~
是跳过合并分支浏览历史的好方法。
* HEAD
|\
| *
| *
| *
| *
* | HEAD~1
|/
* HEAD~2
|\
| *
| *
|/
* HEAD~3
git rebase -i HEAD~2
实际上是 git rebase -i HEAD~2..HEAD
,因此您将获得从 HEAD
可访问的所有提交,不包括从 HEAD~2
可访问的所有提交。这意味着 HEAD
、HEAD~1
以及侧分支中的所有提交。
^
用于选择parents。 HEAD^
是第一个parent,和HEAD~
一样。 HEAD^2
选择第二个 parent,这是分支中的第一个提交。
^
和 ~
可以链接。如果你只想在侧分支上进行两次提交,那就是 git rebase -i HEAD^2~2
。 HEAD^2
选择 HEAD 的第二个 parent。所以HEAD^2~2
是HEAD的第二个parent的第一个grandparent。有插图就更简单了。
* HEAD
|\
| * HEAD^2
| * HEAD^2~ also HEAD^2^
| * HEAD^2~2 also HEAD^2^^
| * HEAD^2~3 also HEAD^2^^^
* | HEAD~1 also HEAD^1
|/
* HEAD~2 also HEAD^1~
|\
| *
| *
|/
* HEAD~3
困惑?没关系。与其搞乱这一切,通常更容易变基回到您合并的分支并将额外的提交保留为 pick
.
git rebase -i main
有关更多信息,请参阅 gitrevisions。