git stash命令解释说明

使用场景:

1. 当正在dev分支上开发某个项目,这时项目中出现一个bug需要紧急修复,但是正在开发的内容只是完成一半还不想提交,这时可以用git stash命令将修改的代码内容保存至堆栈区。然后顺利切换到hotfix分支进行bug修复,修复完成后再次切回到dev分支从堆栈中恢复刚刚保存的内容。 
2. 由于疏忽,本应该在dev分支开发的内容却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中。切回到dev分支后,再次恢复内容即可。 
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。

1. git stash

将所有未提交的修改保存至堆栈中,用于后续恢复当前工作目录。如果想添加注释的话,可以用git stash save "hotfix..." 。

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   src/main/java/com/wy/CacheTest.java
        modified:   src/main/java/com/wy/StringTest.java

no changes added to commit (use "git add" and/or "git commit -a")

$ git stash
Saved working directory and index state WIP on master: b2f489c second

$ git status
On branch master
nothing to commit, working tree clean

2. git stash list

查看当前stash暂存区中的内容

stash@{0}: On master: test2

3. git stash pop

将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。 
注:该命令将堆栈中最近保存的内容删除(栈是先进后出)

$ git stash list
stash@{0}: On master: test2
stash@{1}: On master: test1

$ git stash pop
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   src/main/java/com/wy/StringTest.java

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (afc530377eacd4e80552d7ab1dad7234edf0145d)

$ git stash list
stash@{0}: On master: test1

4. git stash apply

将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多分支的情况。可以使用git stash apply + stash名字(如stash@{test1})指定哪个stash恢复到当前的工作目录。

$ git stash apply
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   src/main/java/com/wy/StringTest.java

no changes added to commit (use "git add" and/or "git commit -a")

$ git stash list
stash@{0}: On master: test2
stash@{1}: On master: test1

5. git stash drop + stash名字

从stash堆栈中移除某个指定的stash

6. git stash clear

清除stash堆栈中的所有内容

7. git stash show

查看堆栈中最新保存的stash和当前目录的差异。

$ git stash show
 src/main/java/com/wy/StringTest.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

8. git stash show stash@{1} -p 

查看指定stash与本地目录差异详情

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值