三分钟教你学Git(十三) - 二分查找
比方说你收到了错误报告,然后你知道前几天明明是好的。可是这几天有好多新的commit被部署了。那么我们怎么迅速的找到第一个引入Bug的commit呢?
我们能够使用git bisect,git利用二分查找法迅速找到第一个坏的commit,下边看看详细怎么用就明确了。
我们首先告诉git我们要開始binary search了。
# git bisect start
然后我们告诉git当前的commit是一个坏的提交。
#git bisect bad
然后我们再告诉git我们已知的一个好的提交,这样子git就知道開始和结束的位置了,然后git会reset到中间的commit。
#git bisect good ad5e0
这时候我们就位于中间到一个commit。我们能够编译执行看看执行结果。假设是好的。我们告诉git是好的。
#git bisect good
这时候git会在后半段中找到还有一个中间commit,然后reset到此commit。我们编译执行看看执行结果。假设是坏的,我们告诉git是坏的。
#git bisect bad
就这样,你能够在lg(n)次找到第一个坏的commit。git找到后会给你打印出此commit的信息。
我们找到这个commit之后,不要忘记退出bisect。
# git bisect reset
我们能够看到尽管比較方便。但还不是全自己主动的,假设你能够写一个脚本执行当前的程序,假设验证正确返回0,验证错误返回1。那么此过程就能够全然自己主动,git能够帮你自己主动找出第一个坏的commit。
# git bisect start bad_commit good_commit
# git bisect run test-error.sh
原文:http://blog.csdn.net/hongchangfirst/article/details/45536701
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst
三分钟教你学Git(十三) - 二分查找的更多相关文章
- 三分钟教你学Git(十六) - 统计
有时候想统计仓库的情况,比方代码量.贡献者之类的. 1 统计某人的commit数量 git log --author="$(git config --get user.name)" ...
- 三分钟教你学Git (四)之紧急救助
假设你不小心git reset --hard HEAD^ 然后这个commit又没有在别的git仓库中,怎么办?是不是这次改动就丢了呢? 当然不是,git为我们每次都历史都保留了reference l ...
- 三分钟教你学Git(十八) - 重写历史
git filter-branch 同意你使用一个单一命令来大范围地更改历史.所以这个命令要慎用. 1假如你想对全部的commits删除一个文件. git filter-branch --tree-f ...
- 三分钟教你学Git(十二) 之 fast-forward
什么是fast forward, 顾名思义,就是高速向前进,Git怎么做到高速的呢? 原来假设Git判定能够fast forward的时候,直接改动当前HEAD指针的指向然后再改动当前HEAD指针.说 ...
- 三分钟教你学Git(十四) 之 线下传输仓库
有时候还有一个人不能从远程直接clone仓库或者说由于非常大,clone非常慢或其他原因.我们能够使用bundle命令将Git仓库打包,然后通过U盘或者是其他介质拷贝给他,这样他拿到打包好的仓库后能够 ...
- [19/03/13-星期三] 数组_二维数组&冒泡排序&二分查找
一.二维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(我们一般使用容器代替,二维数组用的都很少). [代码示例] import ...
- 手把手教你用java实现二分查找树及其相关操作
二分查找树(Binary Search Tree)的基本操作有搜索.求最大值.求最小值.求前继.求后继.插入及删除. 对二分查找树的进行基本操作所花费的时间与树的高度成比例.例如有n个节点的完全二叉树 ...
- 【原创】三分钟教你学会MVC框架——基于java web开发(2)
没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...
- 【原创】三分钟教你学会MVC框架——基于java web开发(1)
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法. ...
随机推荐
- altera ip 核小究
用quartus的MegaWizard工具生成一个乘法器multiplier,会在工程目录下产生 multiplier.qip (可选) multiplier_bb.v (可选) multip ...
- reduce实现数组求和
对于实现数组求和,我们常用的思路是通过for.while,对数组进行迭代,依次将他们的值加起来,下面列举常用的两种方法 第一种: var arr = [1,2,3,4,5,6]; Array.prot ...
- clips 前端 js 单选按钮与输入框 的配合变化
情形1: 一对单选按钮 一个输入框组 输入框组随单选按钮的改变而替换文字或执行其它 片段属于 介绍单选框的基本使用方式 : 1.单选框是有分类的,每个单选框有自己所属的组 从而一个页面可以拥有多组单 ...
- centos 下文件夹共享
[root@localhost share]# yum install samba -y[root@localhost share]# cp /etc/samba/smb.conf /etc/samb ...
- wav格式
转自: http://www.cnblogs.com/tiandsp/archive/2012/10/17/2728585.html 起始地址 占用空间 本地址数字的含义 00H 4byte RIFF ...
- 安全提示“X-Frame-Options头未设置”的解决方法
漏洞检测提示“X-Frame-Options头未设置”,意思是网页可能被别人用iframe框架使用.事实上,我的网页已经通过js程序禁止被iframe框架嵌入使用了.不过,对于使用iis的网站来说,可 ...
- poj 1981(单位圆覆盖最多点问题模板)
Circle and Points Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 7327 Accepted: 2651 ...
- @Html.Raw()用法
@Html.Raw() 方法输出带有html标签的字符串, 如:@Html.Raw("<div style='color:red'>输出字符串</div>" ...
- Js 利用正则表达式和replace函数获取string中所有被匹配到的文本
js的replace函数除了替换文本以外还有获取所有被正则表达式匹配到的文本的功能.这里以一个简单的案例来作为演示. 利用正则查找出所有被两个花括号包裹的字符串: var str = '<div ...
- Codeforces Round #446 (Div. 2) B. Wrath【模拟/贪心】
B. Wrath time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...