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

我最近开始使用git rebase --skip,尽管我最初很害怕。我意识到它只是跳过该提交,就好像它从未发生过一样。

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

1)除最近的提交外,所有提交均被跳过

2)所有提交都会被重播,以便使用their分支来解析提交。

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

工作目录是否是相同结果,这是真的吗?

最佳答案

一般来说,不可以。提交的重播与cherry-pick操作非常相似。不应用存储库的状态,仅应用与该提交对应的补丁(= diff,changeset等)。如果跳过提交,则将忽略变更集,这可能会或可能不会导致冲突。无论哪种方式,仅跳过空的提交通常会得到相同的结果。

但是,如果执行交互式基础更改并将所有提交压缩为一个,则结果工作树应该是相同的。如有必要,请确保了解Undoing a git rebase。 (或者更好的方法是,在原始“their”分支的一次性分支中执行所有重新定基操作。然后,您始终可以通过将重新基于基础的一次性分支与“their”进行比较来仔细检查结果是否已更改。分支,只有在一切正常之后才更新“他们的”分支。)

关于git - 为什么 `git rebase`会应用所有提交而不是仅应用最后一个提交?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32487623/

10-13 07:18
查看更多