others - Git如何命名stash?

git stash save stashname在以后通过 git stash apply stashname但是,在这种情况下,stashname似乎被用作存储描述。

没有办法真正命名一个stash?

时间:

git通过使用正则表达式语法来查找对象,实际上可以找到stash:


stash^{/<regex>}
:/<regex>

例如,使用名称保存stash时:


git stash save"guacamole sauce WIP"

你可以使用正则表达式来解决该问题:


git stash apply stash^{/guacamo}

与正则表达式guacamo匹配的最小的stash,你不必知道stash的数字是什么,只需知道它的名字,此方法没有terser语法,但是你可以在.gitconfig文件中创建别名:


[alias]
sshow ="!f() { git stash show stash^{/$*} -p; }; f"
sapply ="!f() { git stash apply stash^{/$*}; }; f"

然后你可以使用git sapply
然后,可以使用git sshow <regex>显示: 文件更改,插入和删除

这就是你要的操作方式:


git stash save"my_stash"

其中"my_stash"是stash名称。

所有的stash都存储在堆栈中,键入:

 
git stash list

 

这将列出你所有的stash。

要应用stash并把它从stash堆栈中取出,你可以


git stash pop stash@{n}

要应用stash并将它保存在stash堆栈中,请键入:


git stash apply stash@{n}

stash并不是永久的东西,在提交时你使用标签更好,构建要stash的东西,提交它,为该提交创建一个标记,然后将分支回滚到HEAD^ ,现在,当你想重新应用该stash时,你可以使用,git cherry-pick -n tagname(-n--no-commit )。

别名

sapply ="!f() { git stash apply"$(git stash list | awk -F: --posix -vpat="$*""$ 0 ~ pat {print $ 1; exit}")"; }; f"

用法

git sapply"<regex>"

  • Windows兼容


sapply ="!f() { git stash apply"$(git stash list | grep -E"$*" | awk"{ print $ 1; }" | sed -n"s/://;1p")"; }; f"

别名这对于类unix系统来说更直接,不需要封装函数。 在[alias ]下将以下内容添加到~/.gitconfig


sshow = !sh -c 'git stash show stash^{/$*} -p' -
sapply = !sh -c 'git stash apply stash^{/$*}' -
ssave = !sh -c 'git stash save"${1}"' -

用法:正则表达式

例子:git sshow MySecretStash

结尾的连字符表示标准输入。

...