Трижды за последнее время я делал действительно глупые вещи, используя git
. Дважды я запускал git reset --hard
в своем репозитории домашнего каталога. В первый раз, когда я перебрал поиск в обратном журнале в своей оболочке (совсем не хотел его запускать), а во второй раз я оказался в неправильном окне терминала (предназначенном для сброса другого репо). Другой ошибкой было выполнение git push --mirror ssh://remote-machine/
из неправильного репозитория.
git help config
сообщает мне, что «чтобы избежать путаницы и проблем с использованием скриптов, псевдонимы, скрывающие существующие команды git, игнорируются», поэтому мои псевдонимы .git/config
[alias]
reset = "!echo no"
push = "!echo wrong repo"
игнорируются Есть ли способ сделать это просто? Скорее всего, я напишу какой-нибудь скрипт-обертку с alias git=wrapped-git
в моей оболочке, но я надеялся, что будет более простой способ сделать это.
Обновление: с использованием следующего, основанного на ответе grawity, но с использованием встроенной системы конфигурации git. Это позволяет избежать grep'овского файла ad-hoc и позволяет "каскадировать" (~/.gitconfig отключает "сброс" глобально, но для каждого репозитория .git/config это позволяет). По моему .zshrc:
git () {
local disabled=$(command git config --bool disabled.$1 2>/dev/null)
if ${disabled:-false} ; then
echo "The $1 command is intentionally disabled" >&2
return 1
fi
command git "$@"
}