1
xiadong1994 2021-09-18 15:21:55 +08:00 via iPhone 1
你的 develop 是 1 、2 、3,my_feat 是 1 、2 、3.5,你在 develop 上 rebase my_feat,develop 与 my_feat 相比多一个 commit 3,这个 commit 就会被 re 到 my_feat 这个 base 上,所以是 1 、2 、3.5 、3 。你的 origin/develop 此时还是 1 、2 、3 因为没有 push,你 pull 了以后本地 develop 包含了所有远程分支的 commit 所以 history 没变,这时你再 rebase 到 origin/develop,那么本地 develop 分支与新 base origin/develop 的区别就是多了 v3.5,这个 commit 被 re 到了 origin/develop 这个 base 上,就变成了 1 、2 、3 、3.5 。
|
2
msg7086 2021-09-18 18:32:06 +08:00 1
因为你把 develop 的根基改变了。
Rebase 的中文翻译,变基,其实算是比较贴切的。 第一次运行的时候, develop 上是 1 - 2 - 3 my_feat 上是 1 - 2 - 3.5 你在 develop 上变基 my_feat,就是说,my_feat 作为新的根基,在这之上,把 develop 的提交追加上去。 那么 my_feat 的 1 - 2 - 3.5,到这里不变,后面加上 develop 里多出来的 3,自然就是你说的结果了。 第二次运行的时候, develop 上是 1 - 2 - 3.5 - 3 origin/develop 上是 1 - 2 - 3 你现在是让 develop 去变基 origin/develop,就是说,origin/develop 作为新的根基,在这之上,把 develop 的提交追加上去。 那么 origin/develop 的 1 - 2 - 3,到这里不变,后面加上 develop 里多出来的 3.5,这就是你最终看到的结果了。 关键点在于,变基时,基是不会改变的,所以第一次你的根基是 my_feat,那么 my_feat 是什么样,就是什么样,3 是不可能插入到 my_feat 的中间去的。 |