Git如何帮你查原因

Posted 迹说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git如何帮你查原因相关的知识,希望对你有一定的参考价值。

不久前,一位同事为Git的出错,感到烦恼,查找问题的方式非常原始,对于乐于敲命令行的我来说,这哪是一个程序员的所作所为呢!接下来就来说说,怎么高效的查找Git提交出现代码问题的原因。

使用【Bisect命令】,是不是很陌生呢。其还是很强大的,先来说一下原理吧!其基于二分查找算法,大概是这样的:如果你想在有 n 个元素的序列(有序的)中查找元素 x,你挑出第 n/2 个元素并将其与元素 x 比较。如果 x 大,那么就对从 n/2+1 到 n 的子序列重复上述步骤,反之,就对从 1 到 n/2-1 的子序列重复上述步骤, 这样一直递归下去。其效率是变态的高效。

我们来演示一个完整的操作流程

//先确定范围
git bisect bad  //一般都是当前HEAD是坏提交【sha1】
git bisect good a794f9bd96f06b57b4c10433e4d6abb3f0855749 
//上面的步骤就是确定范围的,接下来就是回答git的问题,他指定的提交点是好的还是坏的
git bisect good//如果是坏的,就bad,直到你找到哪个提交点导致出现问题
//查看维护日志
git bisect log
//完成操作后,要回切到工作分支上
git branch
git bisect reset
git branch

还有一种场景就是想知道某一行代码是提交的,可以找他麻烦。好,直接上演示

git blame -L [起始行数],[文件名]

更多技术相关的和话题请关注公众微信号【APPZone】
私下交流请关注的新浪微博@迹_Jason

以上是关于Git如何帮你查原因的主要内容,如果未能解决你的问题,请参考以下文章

关于git bash的问题,pull不下来(登录之后,git帮你记住了,想切换其他用户)

家庭理财方法:知道这7个定律可以帮你赚更多钱!

systemctl start启动vnc失败怎么办?

聊聊如何从 SVN 迁移源码到 Git 仓库

git - windows + linux 双启动中的 CRLF 问题

如何写安全性的接口