相信大家可能都会有这种经验:
当你在开发某一功能时,突然被PM打断,要求你现在要先去修正一个急单,这时候你可以有两个选择:
直接下commit,然后开始改急单使用 git stash,一样开始改急单不管 commit 跟 git stash 都是不错的选择,不过还是有一些不同: 使用 commit 的话,会有纪录,git stash 不会,如果今天你刚好开发到一段落,那下个 commit 可能无伤大雅,不过如果开发到一半要下 commit ,说实话笔者个人是会觉得不恰当
所以今天要来简单说明一下 git stash 的用法
如果平常已经有在使用 git stash 的读者,相信大部分人使用常用的不外乎就是 git stash
跟 git stash
pop,那今天会介绍这两个以外的语法:
git stash
这个语法会将你还没有下 commit 的程式码,储存到你电脑 refs/stash 这个位置,等待你需要它的时候再把它拿出来使用
git stash list
这个语法可以用来看你的 stash 纪录
以上这张图代表我们有一个编号 0
的 stash 纪录,当今天下的 stash 量越大,这边显示的资料也会越多,如果想要跳出这个视窗的话要输入 wq
不过我今天不只想看纪录诶,我想看纪录里面的内容
git stash show
这个语法,可以看到最新一次 stash
的资料
我们可以看到有一个 index.js 的资料夹有两处变更,等等…不对啊,我要看得是资料夹里面的变更啊
git stash show -u
这个语法,就可以看到最新一次 stash
的完整资料了
原来我是更改 index.js 里面的 styles-components 括号啊
不过都是看最新一次 stash
纪录诶,我想看其他的
git stash show 编号 -u
这里的编号指的是,我们前面 git stash list 所看到的编号
所以如果我今天想看编号 0
的详细记录,语法会是 git stash show 0 -u
git stash apply vs git stash pop
以上这两个语法,都可以让你从 stash list 里面取出最新一次 stash
的资料,不过两者有一个很大的不同,就是资料拿出来以后,是否会删除储存记录
结论: git stash apply 不会删除纪录,git stash pop 会删除纪录
取出指定资料
今天要如果只下: git stash apply 或是 git stash pop,都只会去抓取最新一次 stash
的资料,那如果要抓取特定资料呢?一样在语法后面加上 编号
即可
例如: git stash apply 0
或是 git stash pop 0
删除 stash 资料
今天如果要删除stash资料分成两种:
全部删除,git stash list会清空删除指定 stash 资料全部删除
语法是 git stash clear
不过要很小心,因为如果删除,基本上不太可能找回来
删除指定stash资料
聪明如你,应该有猜到语法是 git stash clear 编号
不过很遗憾不是这样,如果这样下的话你会得到一个错误讯息
git stash clear with parameters is unimplemented
上面错误讯息简单来说就是 git stash clear
不接收参数,那怎么办?
其实要删除指定 stash 的语法是 git stash drop 编号
,是不是看到被删除了呢?
以上就是今天的git stash简单介绍拉~~
有任何错误或是问题都欢迎留言给我喔,我们下次见~~
文章同步到我的Medium有兴趣欢迎去看看
参考文章:
https://devdojo.com/smpnjn/git-stash-everything-about-stashing-changes-in-git
https://git-scm.com/docs/git-stash