通过阅读之前的 git 提交来确定何时引入了错误
Figure out when bug was introduced by reading previous git commits
我将 develop
合并到 feature
中,然后发现了一个错误,现在我正试图弄清楚它是如何出现的。如果我 运行 git checkout develop
然后 运行 进行测试,则错误不存在。如果我 运行 git checkout feature
然后 运行 测试,错误就在那里。
我开始通过 运行ning git log
回顾我的功能分支中的提交历史,然后 git checkout <commit>; rspec
我在该功能分支上所做的每一次提交,它们都有漏洞。问题是,这包括我第一次创建功能分支的开发提交!更具体地说,如果我 运行 git checkout feature; git checkout 555555; rspec
测试失败。如果我 运行 git checkout develop; git checkout 555555; rspec
测试通过。
我认为提交编号可以唯一标识代码库。根据您是从功能分支还是开发分支签出,提交如何具有不同的代码?此外,我怎样才能弄清楚我在提交历史中的哪个位置实际引入了错误?显然,我在创建脱离 develop 的功能分支之前没有引入错误。
要找出引入错误的提交,只需找出代码库中的违规行,然后对涉及的文件执行 git blame
以找出提交 ID 和提交者。
基本上,git blame
:
Annotates each line in the given file with information from the revision which last modified the line.
一旦你有了违规提交,你就可以找到所有相关细节,比如它们是何时、如何以及由谁引入的等等。
关于开发分支中不存在但在您的功能分支中存在的更改,可能发生了一些 merge/rebase 冲突,这些冲突没有得到正确解决,错误的合并是错误的原因被介绍了。
编辑:作为 ,未正确解决冲突的不良合并导致此问题。
你的情况似乎是 git 对分的理想选择。 https://www.kernel.org/pub/software/scm/git/docs/git-bisect.html
我将 develop
合并到 feature
中,然后发现了一个错误,现在我正试图弄清楚它是如何出现的。如果我 运行 git checkout develop
然后 运行 进行测试,则错误不存在。如果我 运行 git checkout feature
然后 运行 测试,错误就在那里。
我开始通过 运行ning git log
回顾我的功能分支中的提交历史,然后 git checkout <commit>; rspec
我在该功能分支上所做的每一次提交,它们都有漏洞。问题是,这包括我第一次创建功能分支的开发提交!更具体地说,如果我 运行 git checkout feature; git checkout 555555; rspec
测试失败。如果我 运行 git checkout develop; git checkout 555555; rspec
测试通过。
我认为提交编号可以唯一标识代码库。根据您是从功能分支还是开发分支签出,提交如何具有不同的代码?此外,我怎样才能弄清楚我在提交历史中的哪个位置实际引入了错误?显然,我在创建脱离 develop 的功能分支之前没有引入错误。
要找出引入错误的提交,只需找出代码库中的违规行,然后对涉及的文件执行 git blame
以找出提交 ID 和提交者。
基本上,git blame
:
Annotates each line in the given file with information from the revision which last modified the line.
一旦你有了违规提交,你就可以找到所有相关细节,比如它们是何时、如何以及由谁引入的等等。
关于开发分支中不存在但在您的功能分支中存在的更改,可能发生了一些 merge/rebase 冲突,这些冲突没有得到正确解决,错误的合并是错误的原因被介绍了。
编辑:作为
你的情况似乎是 git 对分的理想选择。 https://www.kernel.org/pub/software/scm/git/docs/git-bisect.html