为什么要用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,版本控制)