通过阅读之前的git提交来确定何时引入了bug

时间:2015-03-26 05:49:18

标签: ruby-on-rails git github rspec

我将develop合并到feature然后发现了一个错误,现在我想弄清楚它是如何到达那里的。如果我运行git checkout develop然后运行测试,则该错误不存在。如果我运行git checkout feature然后运行测试,则会出现错误。

我开始回顾我的功能分支中的提交历史记录,通过运行git log然后git checkout <commit>; rspec为我在该功能分支上进行的每次提交,他们都有错误。问题是,这包括我最初制作功能分支的开发提交!更具体地说,如果我运行git checkout feature; git checkout 555555; rspec,则测试失败。如果我运行git checkout develop; git checkout 555555; rspec,则测试通过。

我认为提交号码唯一标识代码库。提交如何具有不同的代码,具体取决于您是从功能分支还是开发分支中检出?此外,我怎样才能弄清楚在我的提交历史中我实际引入了哪些错误?显然,在创建开发之外的功能分支之前,我没有介绍该错误。

2 个答案:

答案 0 :(得分:1)

您的案例似乎是git bisect的理想选择。 https://www.kernel.org/pub/software/scm/git/docs/git-bisect.html

答案 1 :(得分:0)

要弄清楚引入错误的提交是哪一个,只需找出代码库中的违规行,然后对所调用的文件执行git blame以找出提交ID和提交者。

基本上,git blame

  

使用最后修改该行的修订版中的信息注释给定文件中的每一行。

一旦您有违规提交,您可以找到有关何时,如何以及由谁介绍的所有相关详细信息等。

关于不在开发分支中但在您的功能分支中存在的更改,可能发生了一些未正确解决的合并/重组冲突,并且错误合并是导致该错误的原因。 / p>

编辑:作为OP mentions in comments below,未正确解决冲突的错误合并导致此问题。