我将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
,则测试通过。
我认为提交号码唯一标识代码库。提交如何具有不同的代码,具体取决于您是从功能分支还是开发分支中检出?此外,我怎样才能弄清楚在我的提交历史中我实际引入了哪些错误?显然,在创建开发之外的功能分支之前,我没有介绍该错误。
答案 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,未正确解决冲突的错误合并导致此问题。