Git储藏和引用日志
在日常工作中,当要经常停下手头的工作区修复临时的BUG,紧急处理来自同事或者经理的请求,但是又不能将手头的工作进行提交的时候。那么Git储藏功能(stash)就起到作用了。
储藏可以捕获我们的工作区状态,允许我们保存工作区当前状态,然后在我们方便时再回到该状态------即所谓的“中断工作流”。
看看下面这个场景:比如正在修改 index.html 文件

这个时候,接到一个BUG修复的任务,要求紧急修复一个编号为8080的bug(当然是要切换到BUG分支来工作了),但是手工上的工作没有完成,不方便进行提交。那么这个时候就用 git stash save 保存 当前的工作状态,然后切换到BUG分支进行操作。

注意:save 是 git stash 的默认操作。执行完 git stash save 操作后,我们的工作区就是干净的了。
现在,bug任务修复完成,现在需要切换到 master 分区来继续我的工作,执行 git stash pop 操作,回到刚才保存的工作状态,继续工作,直到提交版本库

git stash save 操作保存了当前 索引 和工作区 的状态,并且会进行清楚工作以匹配当前分支的头。git stash pop 操作将在当前 工作区 和 索引 中还原最近一次 save 操作的内容。
注意:只能在一个干净的 工作区 中使用 git stash pop 命令。
Git引用日志
引用日志(reflog)记录 非裸版(下面一节远程版本库中会介绍) 版本库中分支头的改变。每次对引用的更新,引用日志都会更新以记录这些引用发生了哪些变化。
可以通过引用日志来追踪操作记录并回溯我们的分支操作,一些会更新引用日志的基本操作包括:
1,复制
2,推送
3,执行新提交
4,修改或创建分支
5,变基操作
5,重置操作
命令 git reflog 用于显示引用日志记录

命令 git reflog show 中的 show 为默认操作,展示了默认引用 即 HEAD 。分支名也是引用,那么 git reflog <branch> 可以显示指定分支的引用日志

每一行都记录了引用历史几种的单次事务,从最新的变更开始倒序显示。最左边的是变更时的提交ID。第二列中类似 HEAD@{7} 的条目为每个事务的提交提供的方便列名, HEAD@{0} 是最新的条目。每一行的冒号后面是对发生事务的描述。
每个像 HEAD@{2} 这样的编号可以作为提交的符号名称,为那些需要提交名的 Git命令 所使用,比如 git show <commit>

所有引用日志都保存在 .git/logs 目录下。.git/logs/HEAD 文件中包含 HEAD 值的历史记录,它的子目录 .git/log/refs/ 包含所有引用的历史记录,其中也包括存储。它的二级子目录 .git/logs/refs/heads 包含分支头的历史记录。
在引用日志存储的所有信息,特别是 .git/logs 目录下的一切内容,归根揭底还是临时的,不那么重要的。就算删除 .git/logs 目录也不会损坏Git的内容数据结构;这只会意味着诸如 HEAD@{4} 这样的引用不会被解析。
Git储藏和引用日志的更多相关文章
- Git提交引用和引用日志
转载自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.5-Git%E6%8F%90%E4%BA%A4%E5%BC%95%E7%94%A8%E5%9 ...
- (Git 钩子)自定义你的工作流 和引用日志
Git 钩子是在 Git 仓库中特定事件发生时自动运行的脚本.它可以让你自定义 Git 内部的行为,在开发周期中的关键点触发自定义的行为. Git 钩子最常见的使用场景包括推行提交规范,根据仓库状态改 ...
- Git reflog 引用日志使用详解
本章节主要介绍 git reflog 命令. Git 使用一种称为引用日志或"reflogs"的机制来跟踪分支顶端的更新. 许多 Git 命令接受用于指定引用或"ref& ...
- Git储藏与恢复
cd /f cd android git status echo 'shoping' >> 4 //修改内容 git status git stash //git储藏 git status ...
- putty完全使用手册--多窗口---git提交---连接数据库--自动日志显示
01 putty dev 192.168.3.38 02 cd /home/gongfu/tripb/cranedev02.1 git status git add git commit git pu ...
- Git for Windows之日志查看与版本切换
1.查看本地版本库的修改日志 (1).通过log指令查看完整日志 (2).通过 log --pretty=oneline查看简易版日志 2.版本切换 (1).切换到本地版本库最新的版本,通过reset ...
- git原理:引用规格
引用规格(refspec):就是在 .git/config 里面那个配置远程仓库的东西 [remote "origin"]url = https://github.com/test ...
- 如何修改Git已提交的日志
情况一:最后一次提交且未push 执行以下命令: git commit --amend git会打开$EDITOR编辑器,它会加载这次提交的日志,这样我们就可以在上面编辑,编辑后保存即完成此次的修改. ...
- Git储藏工作现场
假设你现在在dev分支工作,此时你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,你当前工作只进行到一半,还没法提交,预计完成还需1天时间 ...
随机推荐
- FMX 动态创建 和 销毁(释放free) 对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 设置qt插件路径
1.在Qt中使用 WebKit 浏览器核心 使用 QtWebKit 需要在工程文件(*.pro)中加入: QT +=webkitQT += network 2.QtWebKit的flash支持 QtW ...
- Access Violation分成两大类:运行期和设计期(很全的解释)
用Delphi开发程序时,我们可以把遇到的Access Violation分成两大类:运行期和设计期. 一.设计期的Access Violation 1.硬件原因 在启动或关闭Delphi IDE以 ...
- Web 高效开发必备的 PHP 框架
摘要: 每周为您推送最有价值的开源技术内参! 码云项目推荐 1.项目名称:多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合 ...
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(图文并茂,还有实例下载)
[文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.s135.com/libevent_windows/] 本文介绍了如何在 Window ...
- delphi 读写文本文件(函数比较全)
需要两个按钮和两个Richedit控件,采用默认名称即可. procedure TForm1.Button1Click(Sender: TObject); //写文件 var wText: Text ...
- 国人Web前端开发必备干货,一个完美支持IE6在内所有浏览器的CSS框架
摘要: 企户动CSS框架是一个能够完美支持IE6~7在内的所有浏览器的 HTML&CSS 前端框架!给Web开发提供了自适应宽度的百分比多列网格,以及已语义化和结构化的标题.段落.列表.表格. ...
- better later than never
工作一年半,写程序也有几年了,终于开了个博客,记录一下遇到的问题和解决方法,和其他需要记录的东西.希望自己不会懒……已经开通两周了才开始写,唉……
- Hibernate注解(二):关联关系映射注解
关联关系映射注解以下项目均在之前相应代码的基础上进行的修改.这些项目均需要做的是: 删除映射文件 在hibernate.cfg.xml中注册实体类 注解的重要位置在实体类中关联属性上.这里是关联 ...
- You can't specify target table 'tbl_students' for update in FROM clause错误
此问题只出现在mysql中 oracle中无此问题 在同一语句中,当你在select某表的数据后,不能update这个表,如: DELETE FROM tbl_students WHERE id NO ...