为什么`git rebase`应用所有提交而不是仅应用最后一个提交?

时间:2015-09-09 19:22:59

标签: git git-rebase

我知道git rebase的工作原理,并且我已经在生产中使用了一段时间。它将分支的所有提交重放到另一个分支上。它会重写您当前分支的历史记录。

我最近开始玩git rebase --skip,虽然我最初害怕它。我意识到它只是跳过那个承诺就好像从未发生过一样。

在我看来,在这两种情况下,生成的工作目录会是相同的:

1)除最近的

外,所有提交都被跳过

2)重播所有提交,以便解决提交以支持their分支。

提醒their是您重新定位时当前所在的分支。
其他提醒:我对工作目录特别感兴趣。这是一样的吗?

工作目录是否是相同的结果?

1 个答案:

答案 0 :(得分:6)

一般来说,没有。提交的重放与i = 1; while (i < colCount) { excelCol = excelCols[i] as Range; excelCol.AutoFit(); if (excelSheet.Cells[1, i].Value2 == "Col2") DeleteColumnIfEmpty(excelSheet, i); } 操作非常相似。不应用存储库的状态,只应用与该提交对应的补丁(= diff,changeset,...)。如果您跳过提交,则省略更改集,这可能会也可能不会导致冲突。无论哪种方式,一般只跳过提交会产生相同的结果。

但是,如果执行交互式rebase并将所有提交压缩为一个,则生成的工作树应该相同。如有必要,请务必了解Undoing a git rebase。 (或者更好的是,在一次性分支中执行所有的变基操作,分支原始&#34;他们的&#34;分支。然后,你总是可以通过比较那个重新定位的一次性分支来仔细检查结果是否已经改变使用&#34;他们的&#34;分支,只有在一切都很好之后才更新&#34;他们的&#34;分支。)