当本地修改了一批代码,但是需要提交的只是修改中的部分文件或部分代码,可以将不需要提交的部分存入stash,push完之后pop出来继续开发。
作用:将所有修改的文件添加到stash
$ git status
On branch gxtdev
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: file1.c
modified: file2.c
modified: file3.c
no changes added to commit (use "git add" and/or "git commit -a")
$ git stash
Saved working directory and index state WIP on gxtdev: 216a546 Merge branch 'master' into gxtdev
另外,git stash save “xxx” 表示将修改的文件加入缓存且以xxx的名字保存,与git stash功能一致,只不过增加添加备注的功能。
$ git stash save "test_drv"
Saved working directory and index state On master: test_drv
作用:查看stash列表,列表以节点的形式存在
$ git stash list
stash@{0}: WIP on gxtdev: 216a546 Merge branch 'master' into gxtdev
stash@{1}: WIP on gxtdev: 7cb4301 删除xxxxxx
作用:查看stash中文件的更改情况(哪个文件有几处修改)
$ git stash show
file1.c | 2 +-
file2.c | 2 +-
file3.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
使用git stash show stash@{xx}可查看某一个stash缓存的改动情况。
$ git stash show stash@{1}
file1.c | 9 ++
file2.c | 60 ++++++++-
file3.c | 69 +++++-----
file4.c | 236 ++++++++++++++++-----------------
4 files changed, 220 insertions(+), 154 deletions(-)
作用:将stash中的文件"弹"出来
$ git stash pop
On branch gxtdev
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: file1.c
modified: file2.c
modified: file3.c
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (8497606f0036fbb5f13e16b0f13ad489aexxxx)
如果想弹出指定的stash,则执行git stash pop stash@{xx},如:
$ git stash pop stash@{0}
作用:将stash中的文件"弹"到当前分支,但不会在stash栈中删除该分支,应用在将此次改动在多个分支中应用的情况
$ git stash apply
$ git stash apply stash@{xx}
作用:清除stash
$ git stash clear
无提示即clear成功
$ git stash list
无提示即stash中无内容
作用:清除stash,相比git stash clear的优点是可以删除指定的stash缓存
$ git stash drop stash@{0}
Dropped stash@{0} (057a7959cd8b571965e644f7552e7543967ae187)
作用:将部分文件添加到stash
该指令非常实用,不像第1条将所有的文件添加到stash,该语句可以自行选择加入stash的文件
作用:该指令是一个交互式命令,能够一个文件一个文件的遍历,决定每一个文件的操做方式。y放入stash,n不放入stash
该指令对于文件中的每一处修改都进行操作算则是否加入stash,个人觉得该指令针对同一个文件中同时存在有push和stash的情况比较使用。
分享完毕~