始终在 git 中提示输入隐藏消息

Always prompt for a stash message in git

我倾向于隐藏更改而不记得我隐藏它们的原因。

我确实在大多数时候都强调 git stash push -m,但如果有消防演习或其他事情让我无法正常工作,我可能会忘记并浪费时间尝试恢复。

有没有办法模仿 git commit 的行为(减去 -m)对于 git stash 如果消息是 vim 弹出并放弃操作空的?

据我所知,没有针对此的配置选项。您必须在 .gitconfig 中写一个别名并训练自己使用它。

例如,我有两个隐藏别名 git popgit save。 (你可以看到我没有收到关于 git stash save 被弃用的备忘录)。这些都是为了方便,并将默认行为更改为我认为更有用的东西。

save = stash save -k -u
pop = stash pop

不幸的是 git stash push -m 没有调出编辑器,如果您需要写几个词来描述您正在做的事情,请考虑使用分支。我们可以通过编写一些 shell 函数并使用 "$@" 将参数传递给 -m 来解决此问题,以确保带有空格的消息是单个参数。

savem = "!f() { git save -m \"$@\"; }; f"

现在你可以写 git savem 'remember to remember what this was'.

$ git savem 'remember to remember what this was'
Saved working directory and index state On issue/45: remember to remember what this was

如果您忘记了,您将收到正常的 git-stash 用法消息。如果愿意,您可以使用别名来提供自定义用法消息。

$ git savem
usage: git stash list [<options>]
   or: git stash show [<stash>]
...

对我来说,考虑为此使用分支是有意义的。看起来您想保留更改。可以命名分支,以便更容易回忆起正在处理的内容。这些可以是本地的,也可以推送到远程,以防它不是演习。

$ git branch topic/wip

如果你想继续在 master 上工作,你可以做一个

$ git checkout master

不漂亮,但可以使用 bash + moreutils 中的 vipe 实现

msg="$(< /dev/null vipe)";
[[ -z "$msg" ]] || git stash -m "$msg"