当我进入时:
git rebase -i HEAD~3
我没有看到最后3次提交,而是看到了最后的10次。
由于某种原因,其中N是传入的数字,如果2 <= N <= 10,我看到10个选项。如果N = 1,我只看到最后一次提交。
这引出了两个问题: 有谁知道为什么会这样? 有谁知道我怎么能把N变为3?在进一步的提交中会出现很多冲突,我不想反对它们。
对于一些上下文: 我有一个git“功能分支”,它只是一个补丁,允许一些遗留代码在Mac上本地工作。它解决了一个仍在生产的古老Drupal装置的一些问题。我一直在修改它以进行本地开发,然后将其重新设置为提交,以便它可以在暂存环境中进行测试。它工作得很好......直到现在。
答案 0 :(得分:3)
您所看到的关键是rebase的实际行为以及修订说明符~
。
我从http://schacon.github.com/git/git-rev-parse.html#_specifying_revisions得到了这个树结构以及~
如何工作的信息。
以下历史图表是Jon Loeliger的插图。提交节点B和C都是提交节点A的父节点。父提交从左到右排序。:
G H I J
\ / \ /
D E F
\ | / \
\ | / |
\|/ |
B C
\ /
\ /
A
正如我所提供的页面所指示的那样,~
指的是第三祖父母,祖父母将成为任何合并的第一个父母。如果您所在的分支HEAD
- &gt; A
并指定HEAD~3
作为您的修订版,则指向G
。
所以rebase -i HEAD~3
会说您希望以交互方式将所有提交从G
改为A
G
。这意味着您将看到所有其他提交作为rebase流程的一部分,因此您将D
和{{1}而不仅仅是B
,A
和A-F
。在rebase列表中。这将是列出的8个不同的提交与3。