别名:`git pop last`,用于`git stash pop [列表中的最后一个存储]`

时间:2016-08-26 21:13:05

标签: git git-stash

这甚至可能吗?我想要git stash pop stash@{13}更简单的命令,其中stash@{13}只是last含义"列表中的最后一个存储"或者"最古老的藏匿物"。

我知道我可以为git pop创建git stash pop的别名(我可以像git pop stash@{13}一样使用),但我喜欢像git pop last这样简单的内容。我是否需要编写自己的脚本,或者有没有办法只使用git或别名?我主要使用Windows,但有时使用Linux。

1 个答案:

答案 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。)