在日常工作中,当要经常停下手头的工作区修复临时的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储藏和引用日志的更多相关文章

  1. 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 ...

  2. (Git 钩子)自定义你的工作流 和引用日志

    Git 钩子是在 Git 仓库中特定事件发生时自动运行的脚本.它可以让你自定义 Git 内部的行为,在开发周期中的关键点触发自定义的行为. Git 钩子最常见的使用场景包括推行提交规范,根据仓库状态改 ...

  3. Git reflog 引用日志使用详解

    本章节主要介绍 git reflog 命令. Git 使用一种称为引用日志或"reflogs"的机制来跟踪分支顶端的更新. 许多 Git 命令接受用于指定引用或"ref& ...

  4. Git储藏与恢复

    cd /f cd android git status echo 'shoping' >> 4 //修改内容 git status git stash //git储藏 git status ...

  5. putty完全使用手册--多窗口---git提交---连接数据库--自动日志显示

    01 putty dev 192.168.3.38 02 cd /home/gongfu/tripb/cranedev02.1 git status git add git commit git pu ...

  6. Git for Windows之日志查看与版本切换

    1.查看本地版本库的修改日志 (1).通过log指令查看完整日志 (2).通过 log --pretty=oneline查看简易版日志 2.版本切换 (1).切换到本地版本库最新的版本,通过reset ...

  7. git原理:引用规格

    引用规格(refspec):就是在 .git/config 里面那个配置远程仓库的东西 [remote "origin"]url = https://github.com/test ...

  8. 如何修改Git已提交的日志

    情况一:最后一次提交且未push 执行以下命令: git commit --amend git会打开$EDITOR编辑器,它会加载这次提交的日志,这样我们就可以在上面编辑,编辑后保存即完成此次的修改. ...

  9. Git储藏工作现场

    假设你现在在dev分支工作,此时你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,你当前工作只进行到一半,还没法提交,预计完成还需1天时间 ...

随机推荐

  1. spring.net的简单使用(四)对象属性注入

    创建了对象,如果是简单对象就到此为止,如果是复杂对象,则需要为它的属性赋值. 属性赋值有两种方法:属性注入和构造器注入. 一.属性注入 在object节点下使用property就是属性注入,如下: & ...

  2. Qt云服务/云计算平台QTC(Qt Cloud Services)入门(0)

    在这个“大数据”的时代,传统的跨平台C++库Qt已经将魔爪丧心病狂的伸向了“云计算”.在2012年的Qt开发者大会上,Qt发布了BaaS(Backend as a Service)服务——Engini ...

  3. getch(),getche(),getchar()的区别

    先说基本区别. (1) getch()和getche()函数     这两个函数都是从键盘上读入一个字符.其调用格式为:      getch();      getche();     两者的区别是 ...

  4. Windows 7 频繁提示:计算机的内存不足

    最近由于同时打开的程序比较多,Windows 7 频繁提示:计算机的内存不足,如下图: 问题原因: 经过一番尝试,得出一个大概的结论:当虚拟内存空间的大小小于物理内存空间的大小时,一旦程序开的太多,物 ...

  5. Microsoft.Ace.OleDb.12.0 操作excel

    在用c#操作excel的时候,碰到了一下的问题: 1.Microsoft.Ace.OleDb.12.0未安装,可以到下载2007 Office system 驱动程序AccessDatabaseEng ...

  6. 【DRP】-Dao层常用功能代码:增删改查

    本系列博客内容为:做DRP系统中Dao层常用功能. 该项目采用MVC架构 C(Controller)控制器,主要职责;1.取得表单参数:2.调用业务逻辑:3.转向页面 M(Model)模型,主要职责: ...

  7. Qt实现小功能之列表无限加载(创意很不错:监听滚动条事件,到底部的时候再new QListWidgetItem)

    概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...

  8. 【POJ - 3414】Pots(bfs)

    Pots 直接上中文 Descriptions: 给你两个容器,分别能装下A升水和B升水,并且可以进行以下操作 FILL(i)        将第i个容器从水龙头里装满(1 ≤ i ≤ 2); DRO ...

  9. webapi使用autofac

    注意:您的项目中如果使用的是webapi2,此处必须为webapi2而不是webapi,否则在运行时将出现“重写成员“Autofac.Integration.WebApi.AutofacWebApiD ...

  10. Storm —— 单机环境搭建

    1. 安装环境要求 you need to install Storm's dependencies on Nimbus and the worker machines. These are: Jav ...