我正在尝试使用与现有命令相同的别名作为别名,以便别名隐藏原始命令(阻止我从工作树中删除文件)。
[alias]
rm = rm --cached
diff = diff --color
不幸的是,这不起作用。有没有人知道解决方法? 感谢。
修改
设置color.diff = true
会将彩色输出设为默认值。
答案 0 :(得分:22)
对于没有可配置选项的rm --cached
这样的命令,最好的办法是只创建一个不同命名的别名。例如:
[alias]
rmc = rm --cached
你可能已经想到了这一点,但是Git别名不能影响现有的Git命令。来自git-config
man page:
为避免混淆和使用脚本的麻烦,忽略隐藏现有git命令的别名。
答案 1 :(得分:22)
作为一种变通方法,您可以在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'
然后就像正常一样调用它:
$ git add .
add 'foo'
答案 2 :(得分:0)
这是Steve Bennett为oh-my-zsh翻译的答案
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'是别名。