由于查尔斯的小费,我刮起了bash脚本做我想要的到底是什么(我也陷入了实现这个,因为只有一个别名问题)。它需要一个可选的存储消息,就像git存储保存一样。如果没有提供,它将使用由git存储生成的默认消息。
#!/bin/sh
#
# git-stash-push
# Push working tree onto the stash without modifying working tree.
# First argument (optional) is the stash message.
if [ -n "$1" ]; then
git update-ref -m "$1" refs/stash "$(git stash create \"$1\")"
else
HASH=`git stash create`
MESSAGE=`git log --no-walk --pretty="tformat:%-s" "$HASH"`
git update-ref -m "$MESSAGE" refs/stash "$HASH"
fi
编辑:正如下面评论指出的那样,在你的路径某处保存该脚本git-stash-push
足以能够通过键入git stash-push
调用它。
这里的好处是,即使您使用此方法删除存储,您仍然可以使用悬挂提交的git log [commit-hash]来查看存储消息!
编辑:既然git的2.6.0,您可以添加到--create-reflog
和update-ref
然后git stash list
将显示此即使git stash
之前没有使用。
如果你调用'git-stash-push'文件并将它放在PATH的某个地方,就不需要为它创建一个别名。 'git stash-push'会发现(并且调用)'git-stash-push' – 2011-06-12 08:42:20
真的吗?有趣的,我会尝试。 – Eliot 2011-06-13 18:54:31
上述脚本的一个警告,它似乎无法正常工作时,隐藏是空的。 – Eliot 2011-06-24 09:00:12