我可以在我的存储库的一部分上使用git bisect吗?

时间:2013-04-23 23:16:10

标签: git bisect

我有一个包含多个子项目且没有子树或子模块的存储库。我现在有一个需要在Project C中修复的新功能的错误.C依赖于项目A和B.

要使该功能正常工作,我需要最新版本的Project A.

项目B中的某处,引入了错误。所以我的问题是:

我可以运行git bisect并告诉它只在Project B的源代码树上运行,同时保持A和C的最新版本吗?

2 个答案:

答案 0 :(得分:4)

不,git bisect不支持。你永远不应该把不同的项目放到同一个回购中。 Git不喜欢或不支持。尽管如此,这是你可以做的:

git bisect这里基本上有两种模式:普通模式和--no-checkout模式。您可以使用其中任何一种方式以不同方式实现目标:

  1. 正常:运行git bisect,在测试之前的每一步,您都会使用git checkout master -- sub/project/folder将正确版本的子项目放在工作树中。您可能必须在测试之后撤消它,因为您可以继续使用bisect。
  2. --no-checkout :运行git bisect start --no-checkout。除了设置BISECT_HEAD引用外,现在这些步骤对您的回购没有任何影响。使用此参考仅检出projectB:git checkout BISECT_HEAD path/to/projectB。现在做你的测试。
  3. 我会推荐--no-checkout方法。请注意,虽然3lectrologos的提示不起作用,但它仍然有用。将ProjectB的路径赋予git bisect将允许使用这样的事实,即只有在包含对ProjectB的更改的修订版本中才会引入错误。

答案 1 :(得分:1)

我认为git bisect start -- path/to/projectB可以做到这一点。

注意:正如下面的评论中指出的那样,这不会将其余的repo保持在最近的状态,但会考虑只考虑对指定路径进行更改的提交。 / p>