git stash用法总结

使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用git stash就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash pop将以前一半的工作应用回来。git stash命令把未提交的修改储存起来,用于后续的恢复。

常用的git stash命令:

git stash [save 'message']: git stash用于保存为提交的修改,已经commit的不适用了,加一个save可以添加备注信息,用于记录版本。

git stash list:查看所有的stash。

git stash show:显示做了哪些改动,默认show第一个存储,如果要显示其他存储,后面加stash id,比如第二个 git stash show stash@{1},完整的差异可以使用git stash show -p。

git stash pop:将stash缓存堆栈中第一个stash也就是stash@{0}删除,并将对应修改应用到当前的工作目录下。

git stash apply:将stash缓存堆栈中第一个stash应用到当前的工作目录下,但是不会删除缓存堆栈中的缓存,默认使用第一个存储,即stash@{0},应用某个stash后面加stash id。

git stash dropstash@{$num} :删除stash@{$num}存储,从列表中删除这个存储,默认删除第一个。

git stash clear:  删除缓存堆栈中所有存储。

git stash branch <name>:这条命令会根据最近的 stash 创建一个新的分支,然后删除最近的 stash(和 stash pop 一样),如果你需要某个 stash可以指明 stash id。

默认情况下,git stash会缓存下列文件:

添加到暂存区的修改(staged changes)

Git跟踪的但并未添加到暂存区的修改(unstaged changes)

但不会缓存以下文件:

在工作目录中新的文件(untracked files)

被忽略的文件(ignored files)

git stash命令提供了参数用于缓存上面两种类型的文件。使用-u或者--include-untracked可以stash untracked文件。使用-a或者--all命令可以stash当前目录下的所有修改。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容