如何仅在一个分支的提交上“git bisect”?

2024-04-29

在我目前正在进行的一个项目中,我们将每个功能保留为自己的分支,并在功能准备就绪时将其合并回主分支。每个功能分支内的提交可能包括大量“WIP”并破坏其他功能的功能,直到它完整且稳定。

无论如何,由于主分支的提交是唯一(据说)稳定的提交,我想git bisect只在那个分支上。

有没有办法限制git bisect只在一根树枝上?


如果不做进一步的工作,没有简单的方法可以实现这一点。玩了一段时间后,我有一些东西可能对你有帮助。

git bisect start master f9d5924

for rev in $(git rev-list f9d5924..master --merges --first-parent); do
  git rev-list $rev^2 --not $rev^
done | xargs git bisect skip

这将启动 git bisectf9d5924作为你的良好承诺和master作为你的错误承诺。然后它找到每个合并提交右侧不在左侧的祖先。它将那些祖先传递给git bisect skip跳过它们。然而,当它找出哪个提交是错误的时,它将显示来自错误合并提交的所有可能跳过的提交。像下面这样

$ git bisect good
There are only 'skip'ped commits left to test.
The first bad commit could be any of:
0622204625d8817c5d8fd1a2a68b3aa91f2dcdf9
0c771566b9e77e3bdc0a66a7404c8eae9f321a68
5098b44f43f84b213eaab110073a6acd26a5cc02
8b05a808d5e15852fbddaa529ba241fdac8ff693
b0c755c3fa57e3c8d527e76fae38bc9925c01353
We cannot bisect more!

在这种情况下b0c755c3fa57e3c8d527e76fae38bc9925c01353是它失败的合并提交。

Note:这会not如果您有章鱼合并(将两个以上分支合并在一起的合并),则可以工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅在一个分支的提交上“git bisect”? 的相关文章

随机推荐