Определите псевдоним git с тем же именем для теневой оригинальной команды - PullRequest
29 голосов
/ 07 мая 2011

Я пытаюсь использовать для псевдонима то же имя, что и для существующей команды, чтобы псевдоним скрывал исходную команду (что не позволяет мне удалять файлы из рабочего дерева).

[alias]
   rm = rm --cached
   diff = diff --color

К сожалению, это не работает. Кто-нибудь знает обходной путь? Спасибо.

Редактировать Настройка color.diff = true дает цветной вывод по умолчанию.

Ответы [ 3 ]

22 голосов
/ 07 мая 2013

В качестве обходного пути вы можете определить псевдонимы в 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'
22 голосов
/ 07 мая 2011

Для таких команд, как rm --cached, которые не имеют настраиваемых параметров, лучше всего просто создать псевдоним с другим именем. Например:

[alias]
        rmc = rm --cached

Возможно, вы уже поняли это, но псевдонимы Git не могут скрывать существующие команды Git. Из справочной страницы git-config :

Чтобы избежать путаницы и проблем с использованием скриптов, псевдонимы, скрывающие существующие команды git, игнорируются.

0 голосов
/ 20 сентября 2017

Это ответ Стива Беннетта, переведенный как 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' является псевдонимом.

...