【发布时间】:2013-10-25 23:44:38
【问题描述】:
好的,就是这样:
几年前,我们对代码库中的多个文件进行了多次更改,并且一次全部提交。在这些更改中的某个地方隐藏了一个错误。使用 git bisect,我很快就能够追踪到罪魁祸首提交,但该提交中的大量更改让我有点不那么热情了。
使用 git bisect 找到一个错误的提交是一件轻而易举的事,但是一旦找到,追踪导致这一切的单一更改的最佳方法是什么?将受影响的文件一个一个恢复到以前的版本?
【问题讨论】:
-
正如您已经指出的,源代码控制无法为您做更多事情。您实际上只是在问“如何调试我的代码?”没有向我们展示代码,甚至没有告诉我们您使用哪种语言编写代码?
-
这是一个完美的例子,说明为什么提交应该是小的、原子的、带有明确提交消息的操作。
-
@Gareth:不,我不是在问如何调试代码,所以这里的实际代码是无关紧要的。我正在寻求进一步缩小错误提交范围的最佳方法,即以与 git bisect 相同的方式消除其良好的更改。我认为下面给出的答案很好地表明源代码管理实际上可以做得更多。
-
@JohanFredrikVaren:您也许可以使用 Delta (delta.tigris.org) 创建一个最小的失败补丁。您需要测试应用补丁是否可以让您在提交之前通过一些测试并且仍然因您现在发现的错误而失败。最小化该补丁应该会指出错误的更改。