GIT界的神探--bisect
GIT界的神探--bisect
今天我们需要使用git命令中的bisect破获一起凶杀案,下面请看具体案件:
在一个git仓库中有a,b,c,d,e,f,g,h,i,j,k这几个提交,在k提交中发现软件功能F是可以正常工作的,但是在最新的a提交上F已经无法工作(被谋杀了)。
在提交数较少的情况下可以挨个reset看看,但提交数较多的情况下即使人工使用二分法查找也是相当消耗时间的。接下来看看bisect如何工作的吧。
基本用法
start, bad, good
1.git bisect start
开始使用bisect查找
2.git bisect bad HEAD
设置HEAD为已知坏版本
3.git bisect good 89d6e8347c94a26f6f60cc8eeff287ba51c6144c(k提交对应的ID)
设置k提交为已知好版本
当运行完上述三条命令后,会看到如下内容
zhangql0102@njvnc1:~/bisect$ git bisect start
zhangql0102@njvnc1:~/bisect$ git bisect bad HEAD
zhangql0102@njvnc1:~/bisect$ git bisect good 89d6e8347c94a26f6f60cc8eeff287ba51c6144c
Bisecting: 4 revisions left to test after this (roughly 2 steps)
[61c2c497a506cfeb310867e108858b882a9e86ff] f
zhangql0102@njvnc1:~/bisect$
89d6e8347c94a26f6f60cc8eeff287ba51c6144c表示k提交对应的提交ID。
接着bisect会将你的git提交reset到HEAD和k的中间版本f,此时只需要去编译软件验证功能是否OK就行,如OK,输入git bisect good,bisect会继续将git提交reset到f和HEAD的中间版本。如功能不OK,输入git bisect bad,bisect则会将git提交reset到f和k的中间版本。
重复上述步骤直到只剩下最后一个提交为止。
扩展用法
git bisect reset
在进行了bisect查找后git仓库中的提交肯定不是原始提交,所以git bisect reset可以将当前仓库恢复到开始bisect之前的提交。
git bisect reset <commit>
在进行完bisect查找后将git仓库停留在对应的提交位置
git bisect visualize
使用gitk查看当前bisect过程中剩余的提交信息
git bisect log
查看当前使用bisect的记录,如
git bisect start
# bad: [6d1da8180273782d049326014dc248611d7fa8f4] j
git bisect bad 6d1da8180273782d049326014dc248611d7fa8f4
# good: [89d6e8347c94a26f6f60cc8eeff287ba51c6144c] k
git bisect good 89d6e8347c94a26f6f60cc8eeff287ba51c6144c
git bisect reply
当本该运行git bisect good的却运行成了git bisect bad,此时需要使用上面的git bisect log将历史操作记录保存为文件A修改文件中的操作记录然后运行git bisect reset,最后运行git bisect reply A就可以了。
基本上掌握了以上几种用法就可以应付了,更多更完整的用法读者可以使用git bisect --help查看。
GIT界的神探--bisect的更多相关文章
- git help 机器翻译
该篇发布仅为博主个人保存并参考,内容可能不对 usage: git [--version] [--help] [-C <path>] [-c <name>=<value& ...
- 常见的 Git 命令:
开始一个工作区(参见:git help tutorial) clone 克隆一个仓库到一个新目录 init 创建一个空的 Git 仓库或重新初始化一个已存在的仓库 在当前变更上工作(参见:git he ...
- Git分布式版本控制系统(上)
Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...
- 在Ubuntu 18.04上安装Git
步骤1.首先,通过运行以下命令确保您的系统和apt包列表完全更新: apt-get update -yapt-get upgrade -y 第2步.在Ubuntu 18.04上安装Git. 现在让我们 ...
- Git基本操作流程
技术背景 Gitee是一款国内的git托管服务,对于国内用户较为友好,用户可以访问Gitee地址来创建自己的帐号和项目,并托管在Gitee平台上.既然是git的托管服务,那我们就可以先看看git的一些 ...
- 如何在Ubuntu 18.04安装Git
在Ubuntu 18.04安装Git 更新apt包列表 apt-get update -y apt-get upgrade -y 安装Git: apt install git 检查Git版本 git ...
- Linux 使用 github 常用命令
Linux 使用 github 常用命令 今天整理一下常用的 github 命令,自己只是一个编程小白,有些地方可能做的不是很好,仅仅用作自己的学习使用. 创建一个文件夹用于存放github仓库 m ...
- 查找问题的利器 - Git Bisect
原文:http://gitbook.liuhui998.com/5_4.html 假设你在项目的'2.6.18'版上面工作, 但是你当前的代码(master)崩溃(crash)了. 有时解决这种问题的 ...
- [Practical Git] Diagnose which commit broke something with git bisect
Sometimes you find a bug in your project that has been around for a while without being noticed; it ...
随机推荐
- C#定时任务的偷懒实现
通常会有些定时任务的工作,例如每分钟统计一下xxx用户的xxx数量 或者 定时拉取下数据 之类的任务. 通常要实现定时调度功能和控制线程是否可以并发执行. 所以通常一个简单的小项目搞成大项目,但是使用 ...
- Lintcode---统计比给定整数小的数的个数
给定一个整数数组 (下标由 0 到 n-1,其中 n 表示数组的规模,数值范围由 0 到 10000),以及一个 查询列表.对于每一个查询,将会给你一个整数,请你返回该数组中小于给定整数的元素的数量. ...
- 关于wxpy,使用Python玩转微信的问题
在github上下载了,安装了之后在idle上运行,好像是说Python不能上网.新手求助.现在问题已经解决,是ssl 证书的问题,不能用最新的 复制内容到剪贴板 代码: sudo pip unins ...
- Laravel自定义分页样式
<?php namespace App\Http\Controllers; use DB; use App\Http\Controllers\Controller; class UserCont ...
- debian下运行netstat失败
如果提示:bash: netstat: command not found 说明没有安装netstat工具,而该工具在 net-tools 工具包内. apt-get install net-tool ...
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...
- Python 常用内建模块(os, sys,random)
一.os 模块 1,操作系统与环境变量 import osprint(os.name) #操作系统类型,如果是posix 说明系统是linux unix 或 mac os x :如果是nt 就是win ...
- maven下载、配置和安装
Maven简介 #Apache Maven is a software project management and comprehension tool. Based on the concept ...
- linux学习笔记9--命令cat
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. cat命令连接文件并打印到标准输出设备上, ...
- 2016-2017 ACM-ICPC CHINA-Final H Great Cells ans[i]*i看做整体,转化为期望理解来解题
/** 题目:2016-2017 ACM-ICPC CHINA-Final H Great Cells 链接:http://codeforces.com/gym/101194 题意:给定n*m的矩形, ...