我知道git bisect在设计上是分支感知的,因此如果在良好提交,G和错误提交之间,B,你在一个分支中合并,它也需要考虑这些变化,因为bug可能被包含在分支中.
在我的情况下,我有一个依赖作为一个侧分支,我不时合并我的主项目的变化.依赖项可以被认为是一个库,它有不同的运行方式,不同的构建系统等来自我的主项目,但我仍然希望通过合并到主分支的最近更改.
问题是,在这种情况下,当你在依赖提交的提交中最终进行不可编译的提交时.
我真的只想在进行二分时将每个分支合并视为单个提交.
到目前为止我找到的一个解决方法是使用git log --first-parent制作一个有效提交G..B的列表,然后在二等分的情况下,如果当前提交不在该列表中,请执行git bisect skip.这需要花费很多时间(每次跳过都要检查/更改大量文件).
所以问题是:有没有办法做 - 第一父与git bisect或提供我觉得有效的提交列表能够避免检查我知道已经不可编译的分支?我们如何只检查图中标记为o的提交?
G---o---o---o---o---o---o---B main project branch / / / x---x---x---x---x dependency \ / x' dependency project taskbranch
编辑:为清晰起见添加了图表
我仍然是TDD的初学者,我常常陷入陷阱,在尝试添加新功能时,我已经将自己设计成了一个角落.
大多数情况下,这意味着在增加下一个要求时,从前10个要求中产生的API不会扩展,我意识到我必须对现有功能(包括结构)进行大量重新设计以添加内容新东西以一种很好的方式.
这很好,除非在这种情况下API会随之改变,因此所有初始测试都必须改变.这通常比重命名方法更重要.
我想我的问题是双重的:我应该如何避免首先进入这个位置,并且考虑到我进入它,重构测试的安全模式是什么,并允许新API的新功能增长?
编辑:很多很棒的答案,将试验几种技巧.标记为解决方案我觉得最有帮助的答案.