我经常使用git stash
。大多数时候我忘记设置消息(git stash save <message>
)。
强制消息如何可以使用普通的git stash
命令?
从git stash帮助页面:
在没有任何参数的情况下调用git stash相当于git stash save。默认情况下,存储被列为&#34; WIP在Branchname ...&#34;,但您可以在创建命令时在命令行上提供更具描述性的消息。
答案 0 :(得分:1)
此问题的一个简单解决方案是编写一个小脚本,在运行git stash
之前执行所需的所有检查,并为其创建Git别名。当然,不要忘记使用它而不是git stash
。
步骤:
脚本可以这么简单:
#!/bin/bash
git stash save "${1:?You must provide a message.}"
将其另存为~/bin/stash-force.sh
。
使其可执行:
chmod +x ~/bin/stash-force.sh
创建一个扩展为此脚本的Git别名:
git config --global alias.stash-force '!~/bin/stash-force.sh'
脚本名称前面的感叹号告诉Git其余的别名值是一个脚本。 Git使用git stash-force
命令的原始参数运行它。
使用它:
git stash-force "message here"
如果您在没有参数的情况下运行它,${1:?}
参数扩展会启动,并且由于未设置$1
,因此会显示错误消息。
当然,现在您不要忘记运行git stash-force
而不是git stash
(或者更好地找到别名的较短名称)。这是一个烦恼,因为您必须记住使用git stash-force
为其他存储命令创建存储和git stash
。
作为改进,您可以稍微扩展脚本,检查$#
(参数数量)和$1
(其第一个参数)的值,然后显示错误并退出或调用git stash
的所有子命令git stash
。这样您就可以只使用别名并完全忽略git stash
。
但是,您无法使用别名替换git stash
。在git config
documentation中指定忽略与内部Git命令同名的别名。
答案 1 :(得分:0)
我不相信Git中有内置的方法可以做到这一点。如果您不想定义别名或编写(命名不同的)帮助程序脚本但坚持调用git stash
,您可以
$(git --exec-path)/git-stash
的shell脚本,检查stash_msg
中的save_stash ()
变量是否为空,或$(git --exec-path)/git-stash
重命名为$(git --exec-path)/git-stash-orig
并创建一个新的$(git --exec-path)/git-stash
,只需调用$(git --exec-path)/git-stash-orig
,但在{{1}的情况下检查命令行是否有给定的消息首先是子命令。答案 2 :(得分:0)
无需强迫任何东西,你可以用自己的信息藏匿:
git stash save "Your stash message"