为什么要用git stash

git stash 是什么,以及为什么要用stash?
这个文档会告诉你,
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137602359178794d966923e5c4134bc8bf98dfb03aea3000?t=1512708326664#comments

但是看完后,就会有疑问,觉着这个功能很鸡肋,没必要用。修BUG的时候,直接切换分支,再回来到原来的分支不就行了。
测试了一把,原因自现。

情景如下:
    1、在dev分支,创建一个新文件test6.txt。并add它,让它stage。

    2、这时切回master分支,你会看到这个test6.txt居然也在master分支里。但它实际上是属于dev分支的。怎么办?

    3、git stash就有作用了。切回dev分支,执行git stach。这时git bash会告诉你:
“Saved working directory and index state WIP on newF2: b63fbcb add test6.txt
HEAD is now at b63fbcb add test6.txt”。
它已经把test6.txt的现场保存好了。

    4、这时你在切回master分支,test6.txt就消失了。
现在懂了吧。。。。为什么要用git stash。

另外:没有被stage或者head的文件,是无法被 stash的。而且会显示在各个分支里。让你迷惑它到底该属于哪个分支。
所以stash起作用的全是stage 或者 head 的文件。理论来自官网,“也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。”
这句话来自官网:https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%EF%BC%88Stashing%EF%BC%89

学习链接:
1.https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137602359178794d966923e5c4134bc8bf98dfb03aea3000?t=1512708326664#comments

2.https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%EF%BC%88Stashing%EF%BC%89

### 如何应用和恢复 Git Stash 及其适用场景 #### 使用 `git stash` 命令保存更改 当开发者正在处理某个功能分支上的任务,突然需要切换到其他分支进行紧急修复或其他操作时,可以使用 `git stash` 来临时存储未提交的工作进展。这不会影响仓库的历史记录。 ```bash git stash save "message" ``` 此命令会将当前工作区中的所有改动(已跟踪文件的修改与新增加但尚未加入索引的内容)打包成一个新的stash条目,并清理干净工作树以便于自由转换至其它上下文环境[^1]。 #### 应用最近的一次 stash 修改 一旦完成了手头的任务想要重新拾起之前被打包起来的状态,则可以通过执行如下指令来实现: ```bash git stash pop ``` 这条语句不仅能够把最新存入栈内的变更取出来放到现有项目里去,还会自动销毁对应的stash对象;也就是说它是先做了一步`apply`,紧接着再做了一步`drop`的操作[^2]。 如果只是单纯查看或取出某项特定版本而不希望立即移除的话,那么应该单独调用这两个子命令: - 查看所有的 stashes 列表: ```bash git stash list ``` - 将指定编号 n 的 stash (比如第一个即最上面的那个) 覆盖到本地而保留原样不变: ```bash git stash apply stash@{n} ``` 对于那些不再需要的 stash 记录也可以手动清除掉它们: ```bash git stash drop stash@{n} # 移除单个指定位置处的对象 git stash clear # 清空整个队列里的全部成员 ``` #### 合适的应用场合 通常情况下,在以下几种情形下适合采用上述方法之一来进行快速切换开发状态: - 需要暂时搁置正在进行的工作以应对突发情况; - 出现冲突无法直接合并两个不同方向上的变动前先把一边的结果藏匿起来等待时机成熟后再作打算; - 或者是在测试某些实验性质的功能时不破坏原有稳定版源码结构的前提下尝试新的思路等等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值