zoukankan      html  css  js  c++  java
  • 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查看。

    博客新地址www.zqlite.com
  • 相关阅读:
    《计算机网络 自顶向下方法》 第3章 运输层 Part1
    Java 字符串截取问题
    Java 字符排序问题
    Linux 下实时查看日志
    Java项目 打war包方法
    Linux 下 安装jdk 1.7
    Linux 下安装jetty服务器
    Linux 系统下安装 rz/sz 命令及使用说明
    Xshell
    Linux 常用命令大全
  • 原文地址:https://www.cnblogs.com/zqlxtt/p/4643245.html
Copyright © 2011-2022 走看看