使用与shadow原始命令相同的名称定义git别名

M.H*_*bot 30 git alias

我正在尝试使用与现有命令相同的别名作为别名,以便别名隐藏原始命令(阻止我从工作树中删除文件).

[alias]
   rm = rm --cached
   diff = diff --color
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.有没有人知道解决方法?谢谢.

编辑 设置color.diff = true默认为彩色输出.

mip*_*adi 23

对于这样的命令rm --cached没有可配置的选项,最好的办法是只创建一个名称不同的别名.例如:

[alias]
        rmc = rm --cached
Run Code Online (Sandbox Code Playgroud)

您可能已经想到了这一点,但Git别名不能影响现有的Git命令.从git-config手册页:

为避免使用脚本时出现混淆和麻烦,将忽略隐藏现有git命令的别名.

  • 啊.线程有什么愚蠢,令人讨厌的结论.防御并不是很容易,因为它可以防止我在默认情况下使`git clone`递归.白痴. (4认同)

Ste*_*ett 23

作为解决方法,您可以在Bash中定义别名以获得所需的结果.这是我刚刚为我的宠儿感到厌烦的事情 - 默认情况下,'git add'并不详细.(而且没有配置设置).

把它放在你的~/.bash_profile~/.bash_rc

function do_git {
  cmd=$1
  shift
  extra=""
  if [ "$cmd" == "add" ]; then
    extra="-v"
  elif [ "$cmd" == "rm" ]; then
    extra="--cached"
  fi
  git="$(which git)"
  ex="$git $cmd $extra $@"
  ${ex}
}
alias  git='do_git'
Run Code Online (Sandbox Code Playgroud)

然后就像正常一样调用它:

$ git add .
add 'foo'
Run Code Online (Sandbox Code Playgroud)

  • 你的git命令对我不起作用......这样做效果更好:git ="$(git)"ex ="$ git $ cmd $ extra $ @"$ {ex} (2认同)