`
m635674608
  • 浏览: 5027350 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Git学习笔记(九) 历史穿梭

阅读更多

版本表示法:git rev-parse

--git-dir显示Git版本库的位置   --show-cdup显示当前工作区目录的深度  --parseopt解析命令行参数

$ git rev-parse --symbolic --branches 显示分支

$ git rev-parse --symbolic --tags 显示里程碑

$ git rev-parse --symbolic --glob=refs/* 显示定义的所有引用。其中refs/remotes/目录下的引用称为远程分支(或远程引用)

$ git rev-parse HEAD 显示HEAD对应的SHA1哈希值

$ git rev-parse A^{tree} A: 显示里程碑A对应的目录树

$ git rev-parse A^{tree}:src/Makefile A:src/Makefile 显示树里面的文件

$ git rev-parse :/"commit A" 通过在提交日志中查找字串的方式显示提交

版本范围表示法:git rev-list

一个提交ID实际上就可以代表一个版本列表,含义是该版本的所有历史提交 $git rev-list --oneline A

两个或多个版本,相当于每个版本单独使用时指代的列表的并集

在一个版本前面加上符号^含义是取反,即排除这个版本及其历史版本 ^G D等价于G..D

...表示法含义是两个版本共同能访问到的除外

B^@表示某提交的历史提交,自身除外

B^!表示提交本身不包括其历史提交

浏览日志:git log

后面可以接表示版本范围的参数(如上git rev-list)

--graph参数可以显示字符界面的提交关系图,而且不同的分支可以用不同的颜色表示

-<n>显示最近的n条日志

-p可以在显示日志的时候同时显示改动

当不需要知道具体的改动而只想知道改动在哪些文件上时可以使用--stat参数

--pretty=raw显示commit的原始数据,可以显示提交对应的树ID

--pretty=fuller同时显示作者和提交者,两者可以不同

--pretty=oneline提供最精简的日志输出,也可以使用--oneline参数

如果只想查看和分析某一个提交,也可以使用git cat-file(-p参数的含义是美观的输出)或git show命令

差异比较:git diff

$ git diff B A 比较里程碑B和里程碑A

$ git diff A 比较工作区和里程碑A

$ git diff --cached A 比较暂存区和里程碑A

$ git diff 比较工作区和暂存区

$ git diff --cached 比较暂存区和HEAD

$ git diff HEAD 比较工作区和HEAD

$ git diff <commit1> <commit2> -- <paths> 显示不同版本间该路径下的文件差异

$ git diff <path1> <path2> 可以在Git版本库之外执行,对非Git目录进行比较

$ git diff --word-diff 逐词比较

文件追溯:git blame

在软件开发过程中当发现bug并定位到具体代码时,可以指出何时和什么版本引入的此bug。

当针对文件执行git blame命令时,就会逐行显示文件,在每一行的行首显示此行最早是在什么版本引入的,由谁引入的

如果只想显示某几行,使用-L n,m参数

二分查找:git bisect

$ git bisect start 开始二分查找

$ git bisect bad A 将A版本标记为坏提交

$git bisect good 将当前版本标记为好提交

$ git checkout bisect/bad 切换到最终定位的坏提交版本

$ git bisect reset 当对bug定位和修复后,撤销二分查找在版本库中遗留的临时文件和引用。撤销二分查找后,版本库切换回执行二分查找之前所在的分支

如果把好提交当成了坏提交:

$ git bisect log > logfile 把二分查找的日志保存在一个文件中,编辑这个文件,删除记录了错误动作的行。

$ git bisect reset 结束正在进行的出错的二分查找

$ git bisect replay logfile 通过日志文件恢复进度,重启二分查找

自动化测试:

支持run子命令,可以运行一个自动化测试脚本,实现自动的二分查找。若脚本退出码为0,正在测试的版本是一个好版本;退出码为125,正在测试的版本被跳过;退出码为1~127(125除外),正在测试的版本是一个坏版本

测试脚本good-or-bad.sh,步骤如下:

(1)$ git bisect start master G 从已知的坏版本master和好版本G开始新一轮的二分查找

(2)$ git bisect run sh good-or-bad.sh 自动化测试

(3)$ git describe refs/bisect/bad 显示定义到的坏版本

获取文件历史版本命令:

$ git ls-tree <tree-ish> <paths> 查看历史提交的目录树

$ git checkout <commit> 整个工作区切换到历史版本

$ git checkout <commit> -- <paths> 检出某文件的历史版本

$ git show <commit>:<file> > new_name 检出某文件的历史版本到其他文件名

 

http://blog.csdn.net/agul_/article/details/7842885

分享到:
评论

相关推荐

    git学习笔记(git学习笔记).md

    git学习笔记(git学习笔记).md

    git学习笔记.zip|git学习笔记.zip

    在“git学习笔记”中,我们通常会涵盖以下几个核心知识点: 1. **Git安装与配置**:首先,我们需要了解如何在不同的操作系统(如Windows、MacOS或Linux)上安装Git,并设置用户信息,包括用户名和邮箱,这些信息会...

    Git学习笔记.pdf

    而分布式版本控制工具如Git,每个开发者本地都会有一个仓库的副本,包含了项目的完整历史记录,可以离线工作,便于分支管理。 在Git中,rebase、merge、cherry-pick和rm是四个常用的操作命令,用于处理版本合并和...

    Github、git 学习笔记.pdf

    个人github、git学习笔记。包含Github和git的基础命令和介绍。由于网络问题在国外很难插入图片,把源文件的pdf导出版本进行上传。

    Git学习笔记目标规划

    Git学习笔记目标规划,大学学习可以用到,也可以用于自我检测

    Git学习笔记干货

    Git学习笔记干货 Git 是什么? Git 是目前世界上最先进的分布式版本控制系统。版本控制系统是指一种记录、跟踪和管理代码变动的系统。Git 的出现解决了手动管理多个“版本”的问题,使得多人协作编辑变得更加方便。...

    GIT学习笔记

    GIT学习笔记

    git学习笔记 (详细总结)

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

    HTML CSS JS 学习、git-笔记.zip

    HTML CSS JS 学习、git-笔记HTML CSS JS 学习、git-笔记 HTML CSS JS 学习、git-笔记HTML CSS JS 学习、git-笔记 HTML CSS JS 学习、git-笔记HTML CSS JS 学习、git-笔记 HTML CSS JS 学习、git-笔记HTML CSS JS ...

    相关git学习笔记上传

    相关git学习笔记上传

    仓库管理之Git学习笔记

    git学习笔记

    Git安装,git学习笔记,zhang

    Git安装,git学习笔记,zhang

    git 教程笔记 git 教程笔记 git 教程笔记 git 教程笔记

    git 教程笔记 git 教程笔记 git 教程笔记

    git学习笔记总结-原理

    git学习笔记总结-版本管理

    git学习笔记,一看就会

    ### Git学习笔记——入门篇 #### 一、Git简介与安装 **Git**是一种分布式版本控制系统,用于跟踪计算机文件的变化,并协调多个用户之间的共享工作。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理...

    遇见狂神说GIt 学习笔记

    打开md文件,优先推荐使用typora

    我的Git学习笔记

    我的Git学习心得记录,根据廖老师的教程学习记录,希望对你有帮助

    git尚硅谷笔记.pdf

    - **Git** 则是**分布式版本控制**,每个开发者都有完整的项目仓库副本,包括历史版本等信息。 #### 三、Git核心概念 - **仓库(Repository)**:用于存储项目的所有文件及其版本信息的地方。 - **工作目录(Working ...

    git学习笔记

    ### Git学习笔记 #### 一、Git概述与配置 **Git**是一种分布式版本控制系统,用于追踪计算机文件的更改,并协调由多人共同开发的项目。它最初由Linus Torvalds于2005年创建,旨在支持Linux内核的开发。 - **Git...

Global site tag (gtag.js) - Google Analytics