如何使用文件路径来缩短 git bisect 运行时间?

27
我正在使用 git bisect 查找引发故障的提交。但是,该范围内很多提交明显与问题无关(因为它们是针对文档或单元测试的提交)。我想让 git bisect 自动跳过影响某些目录中文件的提交。有什么办法可以做到这一点吗?
1个回答

38

您有几个选择:

  1. 忽略特定提交

    git bisect 包含跳过提交的功能。 您可以指定您不想测试的提交、标签或范围。

     git bisect skip 0dae5f ff049ab ...
    

    在执行git bisect run之前,按照以下方式操作,它将跳过您指定的内容。

  2. 指定有问题的文件夹

    您还可以通过指定需要查找问题的文件夹来减少bisect测试的提交次数。这是在bisect过程的开始阶段,通过向git bisect start提供额外的参数来完成的(摘自标准手册):

  3.  git bisect start -- arch/i386 include/asm-i386
    

    Bisect只会考虑涉及指定文件夹的提交。

    如果您想自动收集涉及某些文件或文件夹的提交,可以使用 git log。例如,以下命令将为您提供修改特定文件夹中文件的提交名称:

    git log --pretty=format:%H  tests/ docs/
    

    你可以利用Shell的功能将结果提供给git bisect skip

    git bisect skip `git log --pretty=format:%H  tests/ docs/`
    

我已经知道前两个选项了,但手动跳过提交太麻烦了(有数百个提交),而且我也不知道哪些文件夹包含有问题的源代码。使用git log的建议非常好!不幸的是,我在Windows上,所以花哨的shell功能对我来说行不通。然而,我可以轻松地手动构建一个适当的git bisect skip命令行。谢谢! - Frerich Raabe
2
@FrerichRaabe:什么,你的Git没有附带Bash副本? - SamB
5
git bisect start 命令添加两个文件夹时,只会查找影响到这两个文件夹的提交。是否有办法查找影响到其中一个文件夹的提交?请注意不改变原文意思。 - EoghanM
git bisect start -- arch/i386 include/asm-i386 中,“arch”是什么意思? - Eduard
@Eduard 这些是在 man git-bisect 中使用的示例;它们曾经是 Linux 内核源代码树中的目录。 - chrstphrchvz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接