【发布时间】:2016-07-18 21:46:09
【问题描述】:
这个问题源于一个令人讨厌的小合并冲突,当我不小心从我的跟踪分支中挑选出我的跟踪分支而不是重新设置它时,我自己陷入了这种冲突。修复它很容易,但我仍然想弄清楚为什么它首先会被发布。
假设我有以下分支(tracking 基于 tracked),其中包含一系列括号中带有哈希的提交,以及指向父提交的箭头。
tracked: a(123) <- b(234) <- c(345)
tracking: a(123) <- b(234) <- c(345)
假设一个新的提交 d 提交 id 为 456 进入 tracked,因此分支的状态如下:
tracked: a(123) <- b(234) <- c(345) <- d(456)
tracking: a(123) <- b(234) <- c(345)
我现在 cherry-pick 456 到 tracking 导致以下跟踪状态:
tracking: a(123) <- b(234) <- c(345) <- d(somethingnot456)
但是,如果我只是执行 git rebase tracked,它本来会是:
tracking: a(123) <- b(234) <- c(345) <- d(456)
那么为什么上面的 id 不同呢?
我已经看到很多关于rebase 与cherry-pick 的问题,但我还没有找到这个特定问题的答案。谢谢。
【问题讨论】:
-
好吧,提交 ID 中有一个时间戳。有趣的问题是它们是否“树相同”?
标签: git rebase cherry-pick