Определить псевдоним git с тем же именем для теневой исходной команды
Я пытаюсь использовать одно и то же имя для псевдонима в качестве существующей команды, так что алиас тенеризирует исходную команду (не позволяя мне удалять файлы из рабочего дерева).
[alias]
rm = rm --cached
diff = diff --color
К сожалению, это не работает. Кто-нибудь знает обходной путь?
Спасибо.
Edit
Установка color.diff = true
дает по умолчанию цветной выход.
Ответы
Ответ 1
Для таких команд, как rm --cached
, у которых нет настраиваемых параметров, лучше всего использовать псевдоним по-разному. Например:
[alias]
rmc = rm --cached
Возможно, вы уже поняли это, но Git aliases не могут теневать существующие команды Git. Из git-config
справочная страница:
Чтобы избежать путаницы и проблем с использованием script, псевдонимы, которые скрывают существующие команды Git, игнорируются.
Ответ 2
В качестве обходного пути вы можете определить псевдонимы в 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
"`which git`" "$cmd" "$extra" "[email protected]"
}
alias git='do_git'
Затем просто назовите его как обычно:
$ git add .
add 'foo'
Ответ 3
Это ответ Стива Беннетта, переведенный на 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" "[email protected]"
}
alias git='do_git'
Знак равенства должен быть заключен в кавычки.
И это не работает, поскольку он просто возвращает, что 'git' является псевдонимом.