在git stash上强制发送消息

时间:2016-08-10 11:43:45

标签: git git-stash

我经常使用git stash。大多数时候我忘记设置消息(git stash save <message>)。

强制消息如何可以使用普通的git stash命令?

从git stash帮助页面:

  

在没有任何参数的情况下调用git stash相当于git stash save。默认情况下,存储被列为&#34; WIP在Branchname ...&#34;,但您可以在创建命令时在命令行上提供更具描述性的消息。

3 个答案:

答案 0 :(得分:1)

此问题的一个简单解决方案是编写一个小脚本,在运行git stash之前执行所需的所有检查,并为其创建Git别名。当然,不要忘记使用它而不是git stash

步骤:

  1. 脚本可以这么简单:

    #!/bin/bash
    git stash save "${1:?You must provide a message.}"
    

    将其另存为~/bin/stash-force.sh

  2. 使其可执行:

    chmod +x ~/bin/stash-force.sh
    
  3. 创建一个扩展为此脚本的Git别名:

    git config --global alias.stash-force '!~/bin/stash-force.sh'
    

    脚本名称前面的感叹号告诉Git其余的别名值是一个脚本。 Git使用git stash-force命令的原始参数运行它。

  4. 使用它:

    git stash-force "message here"
    

    如果您在没有参数的情况下运行它,${1:?}参数扩展会启动,并且由于未设置$1,因此会显示错误消息。

  5. 当然,现在您不要忘记运行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,您可以

  1. 修改$(git --exec-path)/git-stash的shell脚本,检查stash_msg中的save_stash ()变量是否为空,或
  2. $(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"