这甚至可能吗?我想要git stash pop stash@{13}
更简单的命令,其中stash@{13}
只是last
含义"列表中的最后一个存储"或者"最古老的藏匿物"。
我知道我可以为git pop
创建git stash pop
的别名(我可以像git pop stash@{13}
一样使用),但我喜欢像git pop last
这样简单的内容。我是否需要编写自己的脚本,或者有没有办法只使用git或别名?我主要使用Windows,但有时使用Linux。
答案 0 :(得分:5)
建立@torek提供的提示,这可以让你得到你想要的存储的参考:
git reflog stash -- 2> /dev/null | tail -n 1 | cut -d ' ' -f 2 | cut -d ':' -f 1
--
确保您正在寻找修订版而不是路径。 2> /dev/null
会在没有藏匿的情况下抑制错误。
避免使用cut
(@torek再次建议)的替代方案是:
git log --walk-reflogs --format=%gd stash -- 2> /dev/null | tail -n 1
因此,您可以设置这样的别名:
git config alias.pop-last "! git stash pop $(git reflog stash -- 2> /dev/null | tail -n 1 | cut -d ' ' -f 2 | cut -d ':' -f 1)"
或者:
git config alias.pop-last "! git stash pop $(git log --walk-reflogs --format=%gd stash -- 2> /dev/null | tail -n 1)"
如果找不到,这些命令中的任何一个都会给你一个很好的No stash found.
错误。
我已经测试过,这可以在Windows上的Git Bash提示符下运行。 (它也适用于Linux。)