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。第二列中类似 [email protected]{7} 的条目为每个事务的提交提供的方便列名, [email protected]{0} 是最新的条目。每一行的冒号后面是对发生事务的描述。

  每个像  [email protected]{2} 这样的编号可以作为提交的符号名称,为那些需要提交名的 Git命令 所使用,比如 git show <commit>

  

所有引用日志都保存在 .git/logs 目录下。.git/logs/HEAD 文件中包含 HEAD 值的历史记录,它的子目录 .git/log/refs/ 包含所有引用的历史记录,其中也包括存储。它的二级子目录 .git/logs/refs/heads 包含分支头的历史记录。

在引用日志存储的所有信息,特别是 .git/logs 目录下的一切内容,归根揭底还是临时的,不那么重要的。就算删除 .git/logs 目录也不会损坏Git的内容数据结构;这只会意味着诸如 [email protected]{4} 这样的引用不会被解析。

时间: 2024-10-05 04:09:33

Git储藏和引用日志的相关文章

GIT 学习二 (查看日志和回退)

git log(--pretty=oneline) 查看日志, (--pretty=oneline) 简化信息. git reset --hard head 版本回退  head 表示当前版本 git reflog 显示所有日志 和 git log 不同 (git log 只能看到当前版本之前的log) git reset --hard commit id 通过 git reflog 可以查到所有提交的 commit id 然后可以通过 git reset --hard commit id 回退

Git储藏与恢复

1 cd /f 2 cd android 3 git status 4 echo 'shoping' >> 4 //修改内容 5 git status 6 git stash //git储藏 7 git status 8 git stash list //查看储藏的内容 9 git stash apply //恢复 原文地址:https://www.cnblogs.com/MC-Curry/p/8452065.html

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

1.查看本地版本库的修改日志 (1).通过log指令查看完整日志 (2).通过 log --pretty=oneline查看简易版日志 2.版本切换 (1).切换到本地版本库最新的版本,通过reset --hard 版本号的前几位(不需要全部的版本号,只要版本号能找到唯一的版本就行) ok,现在切换到最初始的版本 但是,这个时候查看当前版本的日志,发现 之前的版本日志全部没有了,如果这个时候发现切换的版本错了,怎么办? 解决方案:通过git reflog命令,查看切换版本之后的日志,然后切换到切

spring+mybati java config配置引起的bean相互引用日志报警告问题

摘要: Error creating bean with name 'XXX': Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: 如果把MapperScan单独配置,就不会有警告 报循环引用警告的配

引用日志log4net.dll的web.config配置

<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <configSections> <section name="log4net" type="log4net.Config.Log

Git Pro深入浅出(二)

了解和熟悉下面的Git工具,会使你毫无压力地在命令行中使用Git来完成日常中的大部分事情. 六.Git工具 1. 选择修订版本 Git允许通过几种方法来指明特定的或者一定范围内的提交. git show <commitid> git show <简短的SHA-1> SHA-1 的前几个字符就可以获得对应的那次提交,当然你提供的 SHA-1 字符数量不得少于4个,并且没有歧义--也就是说,当前仓库中只有一个对象以这段 SHA-1 开头. # --abbrev-commit显示简短且唯

git中级技能

中级技能(上) 一.实验说明 从本节开始,我们会介绍一些中级和高级的用法,这些用法很少用到,前面三节的内容已经满足了日常工作需要,从本节开始的内容可以简单了解,需要的时候再详细查看. 1.1 下载测试项目环境 通过下列命令获得gitproject项目环境,该项目默认只有一个文件README.md,可以用来进行后续git实验 $ git clone http://git.shiyanlou.com/shiyanlou/gitproject 二.忽略某些文件 1.忽略某些文件 项目中经常会生成一些G

Git详解之六 Git工具(转)

Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你将领略到一些 Git 可以实现的非常强大的功能,这些功能你可能并不会在日常操作中使用,但在某些时候你也许会需要. 6.1  修订版本(Revision)选择 Git 允许你通过几种方法来指明特定的或者一定范围内的提交.了解它们并不是必需的,但是了解一下总没坏处. 单个修订版本 显然你可以使用给出的

(大数据工程师学习路径)第三步 Git Community Book----中级技能(上)

忽略某些文件 1.忽略某些文件 项目中经常会生成一些Git系统不需要追踪(track)的文件.典型的是在编译生成过程中产生的文件或是编程器生成的临时备份文件.当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中. 但是这样会很快变成一件烦人的事,你发现 项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时"git