[英]Can I use git bisect on a portion of my repository?
我有一个单一的存储库,其中包含几个子项目,而没有子树或子模块。 我现在有一个新功能的错误,需要在Project C中进行修复。C取决于项目A和B。
为了使该功能正常工作,我需要最新版本的ProjectA。
在项目B的某个地方,引入了该错误。 所以我的问题是:
我可以运行git bisect并告诉它仅在Project B的源代码树上运行,同时保持A和C为最新版本吗?
不,git bisect不支持该功能。 您永远不应将不同的项目放到同一存储库中。 Git不喜欢或不支持。 尽管如此,您仍然可以执行以下操作:
git bisect
在这里基本上有两种模式:普通模式和--no-checkout
模式。 您可以使用两种方法中的任意一种来实现您的目标:
git bisect
,然后在测试之前的每一步中,使用git checkout master -- sub/project/folder
将正确版本的子项目放入工作树中。 您可能必须撤消测试之后才能将二等分连接的想法。 --no-checkout
:运行git bisect start --no-checkout
。 现在,除了设置BISECT_HEAD
引用之外,这些步骤对您的存储库也没有任何影响。 使用此引用仅git checkout BISECT_HEAD path/to/projectB
: git checkout BISECT_HEAD path/to/projectB
。 现在进行测试。 我建议使用--no-checkout
方法。 并且请注意,尽管3lectrologos的提示不起作用,它仍然很有帮助。 将ProjectB的路径指定为git bisect
将允许利用这样的事实,即错误只能在包含对ProjectB所做更改的修订版中引入。
我认为git bisect start -- path/to/projectB
应该可以解决问题。
注意 :正如下面的注释中指出的那样,这不会使存储库的其余部分保持其最新状态,而是将一分为二,仅考虑对指定路径进行了更改的提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.