背景
从Linux内核版本4.12及更高版本开始,我的设备无法正常工作。我想找出导致问题的具体提交。我目前的流程是:
git checkout <commit id>
make menuconfig
,然后重新编译make -j32
问题
当我经历这个繁琐的过程时,我发现编译的内核版本不同(您也可以通过阅读Makefile
来查看)。 但是,我没有通过linux内核提交日志看到版本更改。实际上,在尝试git diff <first commit id> <second commit id>
之后,根据linux内核,第二个提交id为1,在第一个提交后面提交在步骤1中提交日志,发现有些更改未反映在网站上。
问题
为什么会这样?我该如何正确找出导致设备出现问题的具体提交?
答案 0 :(得分:3)
为了正确找出导致设备出现问题的提交,您应该使用git bisect
。它可以自动完成您手动完成的工作流程。请参阅文档here。
此命令使用二进制搜索算法查找中的提交 你的项目历史引入了一个bug。你首先告诉它使用它 它是一个“坏”提交,已知包含该错误,并且“好” 在引入错误之前已知的提交。然后是git bisect在这两个端点之间选择一个提交并询问您是否 选定的提交是“好”或“坏”。它继续缩小 范围,直到找到引入更改的确切提交。