不久前,一位同事为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 [起始行数],[文件名]

weixin

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


迹_Jason
1k 声望65 粉丝

feeling主义者,追求极致的简约,创造最好的用户体验