问题
- 编码时,有时会出现代码写了一半,还没写完,但是需要中断去执行别的操作,例如:切换到另外一个分支去修改时,此时不能提交代码,也不能丢弃代码更改,所以需要能够临时保存下代码修改。
git stash
使用
xxx@midcompser:~$ git stash -help
usage: git stash list [<options>]
or: git stash show [<options>] [<stash>]
or: git stash drop [-q|--quiet] [<stash>]
or: git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash clear
or: git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
[--] [<pathspec>...]]
or: git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [<message>]
git stash
git stash save 'message...' //保存并增加注释信息
方法1:
git stash -p //交互模式,选择需要保存的文件
方法2:
git stash push <file1> <file2> <file3> [file4 ...] //新版本才支持
* git stash push include/.
git stash list
git stash pop
git stash pop --index
* 恢复指定的进度到工作区。index 从 0 开始
git stash pop stash@{1}
* 恢复指定的进度到工作区。stash@{1} 是通过git stash list命令得到的
* 通过git stash pop命令恢复进度后,会删除保存的stash记录。
git stash apply [–index] [stash_id]
* 除了不删除恢复的进度之外,其余和git stash pop 命令一样。
git stash drop [stash_id]
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
git stash clear
删除所有存储的进度。
注意点
- stash会保存暂存区和工作区已加入版本管理的文件修改,但是pop后,之前已加入暂存区的文件不会恢复到暂存区,而是恢复到工作区。