git 的存储操作 | git stash 的使用方法

今天4月份才开始使用git,经历了几个月的使用,发现相见很晚,真是方便。
平时常用的也无非就是 git pull ,git add , git commit , git push, git rm, git checkout 这些命令,其他命令没咋用过,也不太清楚。
月初的时候,在观察同事的操作时,发现了一个十分好用的git命令:

git stash

在知道这个命令前,我一般都是通过git commit -am “注释“ 来保存自己之前的修改,然后再去master分支上生成一个新的分支来解决突发事件,解决完毕后,再切换到之前的分支继续开发,然后用git add 和git commit –amend 来解决提交问题。

那么,在得知了这个命令之后,我们只需要这么一段命令,就可以把手头上的事情给存储起来,然后再去解决一些突发事件。等事情结束后,在从git库中把之前的修改取出来即可。

例如,现在正在stash分支上,并且修改了a.php文件

localhost:~/work/test_git/sample(stash)$ git status
位于分支 stash
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    修改:     a.php
修改尚未加入提交(使用 "git add" 和/或 "git commit -a"localhost:~/work/test_git/sample(stash)$ 

这个时候,其他地方出现了一个紧急bug需要你赶紧去改
那么只需要输入 git stash 即可把你修改的内容存储起来,呈现处一个干净的工作区

localhost:~/work/test_git/sample(stash)$ git stash 
保存工作目录和索引状态 WIP on stash: 720bf34 测试并打上标签
localhost:~/work/test_git/sample(stash)$ git status
位于分支 stash
无文件要提交,干净的工作区
localhost:~/work/test_git/sample(stash)$ 

存储的记录,可以通过 git stash list 来查看

localhost:~/work/test_git/sample(stash)$ git stash list
stash@{0}: WIP on stash: 720bf34 测试并打上标签
stash@{1}: WIP on master: 6c816f2 log查看
stash@{2}: WIP on master: 6c816f2 log查看
stash@{3}: WIP on bianji: 87120dc 恢复隐藏存储,并解决冲突
localhost:~/work/test_git/sample(stash)$ 

这条记录就是最近一次 git stash 的执行保存的内容

stash@{0}: WIP on stash: 720bf34 测试并打上标签

在解决完其他分支的紧急bug后,我们可以通过 git stash pop 来恢复之前的修改,记住要先切换到你之前的那个分支下来执行 git stash pop

localhost:~/work/test_git/sample(stash)$ git stash pop
位于分支 stash
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

    修改:     a.php

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
丢弃了 refs/stash@{0} (ce625540e83daed47d0b599a04d87d33d30b2bb2)
localhost:~/work/test_git/sample(stash)$ 

执行完毕后,我们就可以接着之前的进度来继续开发需求。

假如我们存储的记录不是stash@{0},那么我们可以通过 git stash apply 来指定记录来进行恢复
比如,我们要恢复master上的stash@{1} 记录,只需要在master分支上执行 git stash apply stash@{1} 即可

localhost:~/work/test_git/sample(master)$ git stash list
stash@{0}: WIP on stash: 720bf34 测试并打上标签
stash@{1}: WIP on master: 6c816f2 log查看
stash@{2}: WIP on master: 6c816f2 log查看
stash@{3}: WIP on bianji: 87120dc 恢复隐藏存储,并解决冲突
localhost:~/work/test_git/sample(master)$ git stash apply stash@{1} 
自动合并 a.php
位于分支 master
您的分支与上游分支 'origin/master' 一致。
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    修改:     a.php
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
localhost:~/work/test_git/sample(master)$ 

猜你喜欢

转载自blog.csdn.net/weixin_39179096/article/details/82192428