终于建了一个自己个人小站: https://huangtianyu.gitee.io ,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~

在使用git的时候往往会保存一些东西,在保存的时候使用的就是git stash,强大的git使得保存修改和恢复修改变的很容易,但有时候时间久了不记得stash里面的内容是什么了,通过在stackflow里面查找,找到了一个好的方法。其网址是:

http://stackoverflow.com/questions/10725729/git-see-whats-in-a-stash-without-applying-stash

当利用git stash pop弹出来会有些耗费时间,这时可以使用git stash show来查看stash里面保存的内容。

在git bash上可以使用git --help stash来查看git stash命令的用法,当在stash后加show时,官方给出的介绍如下:

show [<stash>]

Show the changes recorded in the stash as a diff between the stashed state and its original parent. When no <stash> is given, shows the latest one. By default, the command shows the diffstat, but it will accept any format known to git diff (e.g., git stash show -p stash@{1} to view the second most recent stash in patch form). You can use stash.showStat and/or stash.showPatch config variables to change the default behavior.

翻译如下:显示修改在stash状态与原版本之间的不同变化。当没有<stash>给定时,显示最新stash的变化。默认情况下,命令显示diffstat,它可以接受任何已知的git diff格式(例如,git stash show -p stash@{1}是查看第二最近stash的变化)。你可以使用stash.showstat和/或stash.showpatch配置变量来改变默认的行为。 也就是使用git stash show -p stash@{1}来查看stash的内容变化。

保存所有未提交的修改: git stash (本地保存,没有注释) 保存所有未提交的修改: git stash save 'xxxx(注释)'(本地保存,有注释) 查看 现有的 stash git stash list 查看 最新 stash 和本地的差异: git stash show(只能看到 文件 查看 指定 stash 和本地的差异: git stash show stash @{index}(只能看到 文件 查看 最新 stash 和本地的详细差异: git stash show -p(能看到具体修改的地方)......... svn- stash 就像 git stash 命令一样,但是对于Subversion。 如果您不懂 git ,则应该阅读 Svn- stash 允许您隐藏不想立即提交的更改。 在某些情况下,这可能会更有用。 我喜欢 git ,我认为它应该用在任何程序员开始的新项目中(如果您不这么认为,欢迎与我讨论它,但是您可以之前阅读。:) )。 但是,在我现在正在工作的一些旧项目中,从svn到 git 的迁移非常困难或不可能。 Git 有一组我通常使用的很棒的命令(例如隐藏),svn没有直接等效的命令。 svn- stash 试图将 git stash 命令的某些功能移植到Subversion中。 目前,此命令仅 在平常的工作中,当我们在单独拉取的功能分支中进行开发时,遇到线上出现bug需要进行紧急修复,我们需要切换到主分支,进行代码的修复。但是我们直接在本地切换到主分支,则会提示当前 文件 的改动会丢失。 我们在分支修改代码的时候,可能需要切到另一个分支去写代码, git 通常是本地无修改时才会允许切换到其他分支,这时候我们既想保存自己写的代码,又想切换到其他的分支,那么这时候就用到了 git stash 命令。 git stash 的作用是把所有未提交的代码进行存储,它可以获取到工作目录的中间状态(也就是追踪修改的 文件 以及暂存的变更),它其实是将你的变更存储到了一个堆栈中,随时可以重新使用。 git stash 相关命令 1、 git stash list ... git stash 会将当前本地的修改保存到本地 git stash list 查看 当前 stash 的记录 git stash pop 取出 stash ,并删除记录, 默认是最近一次 git stash pop + “ stash @{X}” 取出X记录 git stash apply 取出 stash ,不删除记录 git stash apply + “ stash @{X}” 取出X记录 git stash drop + “ stash @{X}” 删除X记录 git stash push /.../... : 存取指定的 文件 git stash -m "存储的信息" : 给当前压栈存储的修改添加说明信息(如果没有指定信息,则说明信息为最新的commit信息) git stash list : 查看 所有的压栈修改; git stash show stash @{0} : 查看 某一个压栈修改了哪几个 文件 git stash show -p stash @{0 git status命令表示: 文件 文件 夹在工作区,暂存区的状态,下图就是 文件 文件 夹三种状态: Changes to be committed: (use “ git restore --staged …” to unstage) new file: bbbb.txt Changes not staged for commit: (use “ git add …” to update what will be committed) (use “ git restore …” to discard changes Save your local modifications to a new stash entry and roll them back to HEAD (in the working tree and in the index). 把修改储藏到 stash 栈中,把工作区和index区回溯到HEAD的版本。 . git /refs/ stash 中,存储的是最后一个 stash 对应的节点指针 在 . git /log/refs/ stash 中可以看到我们全部的 stash 记录信息 git stas 一、 git stash 1、 git stash 保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行 git status命令,就会发现当前是一个干净的工作区,没有任何改动。使用 git stash save 'message...'可以添加一些注释 2、 git stash list 显示保存进度的列表。也就意味着, git stash 命令可以多次执行。 git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先 stash , 使返回到自己上一个commit, 改完bug之后再 stash pop, 继续原来的工作。 基础命令: $ git stash $do some work $ git stash pop Git stash ... 常用 git stash 命令: (1) git stash save “save message” : 执行存储时,添加备注,方便查找,只有 git stash 也要可以的,但查找时不方便识别。 (2) git stash list : 查看 stash 了哪些存储 (3) git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加 stash @{$num},比如第二个 git stash show stash @{1} (4) git stash show -p : 显示第一个存储的