git stash的使用

来源:互联网 发布:通达信原油看盘软件 编辑:程序博客网 时间:2024/05/17 02:30

工作中,往往会遇到类似这样的情况:

正在a分支上写新功能,项目经理突然说b分支上有个bug需要修改。这时如果切换到b分支,那么所有在a分支上写的文件都会跟随到b分支,无奈之下,只能待在a分支止做个提交,然后切换到b分支。这样就莫名的多了个commit。

这时就是git stash的用武之地了。git stash是用于保存和恢复工作进度的。


一、备份文件

//完整命令git stash [save [--patch] [-k|--[no]keep-index] [-q|--quiet] [<message>]]

保存当前的工作进度

//拆解命令1git stash

什么参数不加,会分别对暂存区(没有add的)和工作区(add之后的)的状态进行保存。

//拆解命令2git stash save "message"

save可以添加保存时的备注。示例:git stash save "完成user接口"

//拆解命令3git stash -k

-k 或–keep-index只备份没有add的文件。示例git stash save --keep-index "部分文件"


二、查看备份列表

git stash list

显示备份列表。git stash是可以多次保存工作进度的,在恢复时候选择对应的项进行恢复。显示如下:

stash@{0}: On master: 部分文件stash@{1}: On master: 完成user接口stash@{2}: WIP on master: 3eef0b3 change primary databasestash@{3}: WIP on master: 3eef0b3 change primary database

三、恢复备份文件

方式一

//完整版命令git stash pop [--index] [<stash>]

恢复备份文件

//拆解命令1git stash pop

不使用任何参数,会恢复最近一次的备份文件(也就是stash list中的stash@{0}),并将恢复的工作进度从存储的工作进度列表中清除。

//拆解命令2git stash pop stash@{1}

指定恢复git stash list中的某一个备份进度。

方式二

git stash apply [--index] [<stash>]

除了不删除恢复的进度之外,其余和git stash pop 命令一样。

四、删除备份列表

git stash drop [<stash>]

删除一个存储的进度。默认删除最新的进度。

git stash clear

删除所有存储的进度

五、使用技巧

常规 git stash 的一个限制是它会一下暂存所有的文件。有时,只备份某些文件更为方便,让另外一些与代码库保持一致。一个非常有用的技巧,用来备份部分文件:

  1. add 那些你不想备份的文件(例如: git add file1.js, file2.js)
  2. 调用 git stash –keep-index。只会备份那些没有被add的文件。
  3. 调用 git reset 取消已经add的文件的备份,继续自己的工作。
原创粉丝点击