使用相同名称定义git别名以隐藏原始命令

使用相同名称定义git别名以隐藏原始命令,git,alias,Git,Alias,我正在尝试使用与现有命令同名的别名,以便别名将原始命令隐藏起来(防止我从工作树中删除文件) 不幸的是,这是行不通的。有人知道解决方法吗? 谢谢 编辑 设置color.diff=true会将彩色输出作为默认值。对于没有可配置选项的命令,如rm--cached,最好的办法是使用不同的别名。例如: [alias] rmc = rm --cached 您可能已经了解了这一点,但Git别名无法隐藏现有Git命令。从: 为了避免脚本使用的混乱和麻烦,隐藏现有git命令的别名将被忽略 作为一

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

不幸的是,这是行不通的。有人知道解决方法吗? 谢谢

编辑
设置
color.diff=true
会将彩色输出作为默认值。

对于没有可配置选项的命令,如
rm--cached
,最好的办法是使用不同的别名。例如:

[alias]
        rmc = rm --cached
您可能已经了解了这一点,但Git别名无法隐藏现有Git命令。从:

为了避免脚本使用的混乱和麻烦,隐藏现有git命令的别名将被忽略


作为一种解决方法,您可以在Bash中定义别名以获得所需的结果。这里有一件事我刚刚为我的宠物恼怒了起来,“git add”在默认情况下不是冗长的。(而且它没有配置设置)

将其放入您的
~/.bash\u配置文件
~/.bash\u rc

函数do\u git{
cmd=$1
转移
extra=“”
如果[“$cmd”==“添加”];则
额外=“-v”
elif[“$cmd”==“rm”];然后
extra=“--cached”
fi
git=“$(哪个git)”
ex=“$git$cmd$extra$@”
${ex}
}
别名git='do_git'
那就像平常一样说吧:

$ git add .
add 'foo'

这是史蒂夫·贝内特的答案,翻译为“噢,我的天啊

function do_git {
  cmd=$1
  shift
  extra=""
  if [ "$cmd" '==' "add" ]; then
    extra="-v"
  elif [ "$cmd" '==' "rm" ]; then
    extra="--cached"
  fi
  "`whence -p git`" "$cmd" "$extra" "$@"
}
alias  git='do_git'
等号需要用引号括起来。
这不起作用,因为它只返回“git”是一个别名。

为什么要这样做?使用不同的命令名有什么问题?可能是重复的。tl;基休博士。线程得出了多么愚蠢、令人讨厌的结论。这不太容易维护,因为它阻止我在默认情况下进行
git clone
递归。白痴。你的git命令对我不起作用…这更有效:git=“$(哪个git)”ex=“$git$cmd$extra$@”${ex}对我来说,这两个语句看起来是等价的。我想知道为什么一个不起作用?这对讨论毫无意义
是zsh.No中
whence-p
的内置别名。不,不是。
function do_git {
  cmd=$1
  shift
  extra=""
  if [ "$cmd" '==' "add" ]; then
    extra="-v"
  elif [ "$cmd" '==' "rm" ]; then
    extra="--cached"
  fi
  "`whence -p git`" "$cmd" "$extra" "$@"
}
alias  git='do_git'