1

我想使用 git bisect 来修复一些错误。

git clone git@github.com:pingcap/tidb-engine-ext.git
git checkout raftstore-proxy
git bisect start
git bisect good 45ce5b9584d618bc777877be8a77cb94f61b8410
git bisect bad 8acb2b2ed0eb1576e7961149bde27cb1568ec39e

它建议我检查 commit e868450a9f982b25790262c9e86ff1e27ab8dc2e,我会称之为 mid 。

当我开始检查这些提交的提交日期时,这很奇怪

git show --no-patch --no-notes --pretty='%ci %ai' 45ce5b9584d618bc777877be8a77cb94f61b8410
# 2021-06-24 16:15:24 +0800 2021-06-24 16:15:24 +0800
git show --no-patch --no-notes --pretty='%ci %ai' e868450a9f982b25790262c9e86ff1e27ab8dc2e
# 2020-11-27 14:59:01 +0800 2020-11-27 14:59:01 +0800
git show --no-patch --no-notes --pretty='%ci %ai' 8acb2b2ed0eb1576e7961149bde27cb1568ec39e
# 2021-09-28 12:57:47 +0800 2021-09-27 13:50:37 +0800

我认为提交日期e868450a9f982b25790262c9e86ff1e27ab8dc2e应该在 之间[good,bad],即使我们考虑到潜在的樱桃选择/变基,因为每个操作都会改变提交日期。所以这里很奇怪。

同时,我还检查了好和坏是否有共同的合并基础,结果是肯定的。我想这意味着有一条链good -> ... -> bad,所以我可以在这条链上平分

git merge-base 45ce5b9584d618bc777877be8a77cb94f61b8410 8acb2b2ed0eb1576e7961149bde27cb1568ec39e
45ce5b9584d618bc777877be8a77cb94f61b8410

但是,我们检查了坏/中和中/好的合并基础,事情变得陌生。它显示了 good 和 mid 的合并基础既不是 good 也不是 mid,但是为什么会发生这种情况呢?

git merge-base 45ce5b9584d618bc777877be8a77cb94f61b8410 e868450a9f982b25790262c9e86ff1e27ab8dc2e
# eb82614fc19345f363458e66b53aaff5c57563d5
git merge-base e868450a9f982b25790262c9e86ff1e27ab8dc2e 8acb2b2ed0eb1576e7961149bde27cb1568ec39e
# e868450a9f982b25790262c9e86ff1e27ab8dc2e
4

0 回答 0