防止没有额外参数的`git stash` 运行

fre*_*fox 3 git

任何人都知道是否可以修改,git因此它只会拒绝git stash并要求我明确指定git stash push. 当我想检查藏匿处 ( git stash list)时,我经常发现自己不小心藏了东西。同样,如果我在索引中有东西然后做git stash(忘记添加--keep-index),那就很烦人了。这反过来又会产生灾难性的后果(如何在 git stash / git stash pop 之后恢复索引?

Elp*_*Kay 7

将函数添加到~/.bashrc.

function git() {
  GIT=`which git`
  if [[ "$#" -eq 1 ]] && [[ "$1" = "stash" ]];then
    echo 'WARNING: run "git stash push" instead.'
  else
    $GIT $@
  fi
}
Run Code Online (Sandbox Code Playgroud)

虽然我在 Ubuntu 和 Windows 上都尝试过并且都成功了,但我不确定是否有任何可能导致错误的副作用。

  • 请注意,在从 shell 函数内部运行命令时,您可以使用 `command git` 绕过 shell 函数,而不是 `GIT=$(which git)` 和后面的 `$GIT`。不过,整体效率大致相同。 (2认同)