【发布时间】:2011-03-11 21:44:08
【问题描述】:
我正在使用git bisect 来查找导致失败的提交。但是,该范围内的许多提交肯定是无关紧要的(因为它们是对文档或单元测试的提交)。我想让 git bisect 自动跳过影响某些目录中文件的提交。这有可能吗?
【问题讨论】:
标签: git git-bisect
我正在使用git bisect 来查找导致失败的提交。但是,该范围内的许多提交肯定是无关紧要的(因为它们是对文档或单元测试的提交)。我想让 git bisect 自动跳过影响某些目录中文件的提交。这有可能吗?
【问题讨论】:
标签: git git-bisect
你有几个选择:
忽略特定的提交
git bisect 包含跳过提交的功能。你可以指定你不想测试的提交、标签、范围
git bisect skip 0dae5f ff049ab ...
在您git bisect run 之前执行此操作,它应该会跳过您指定的内容。
指定来源损坏的文件夹
您还可以通过指定应该在哪些文件夹中查找问题来减少提交bisect 测试。这是在bisect 过程的开头通过向git bisect start 提供附加参数来完成的(引用标准手册):
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 命令行。谢谢!
git bisect start 只查看涉及两个文件夹的提交。有没有办法查看触及任一文件夹的提交?
git bisect start -- arch/i386 include/asm-i386
man git-bisect 中使用的示例;它们曾经是 Linux 内核源代码树中的目录。