Установка флагов git по умолчанию для команд - PullRequest
83 голосов
/ 23 марта 2010

Я хочу знать, есть ли способ установить флаг по умолчанию для команды git. В частности, я хочу установить флаг --abbrev-commit, чтобы при выполнении git log я хотел выполнить git log --abbrev-commit.

В отличие от вопроса " есть ли способ установить флаг по умолчанию для команды git? ", очевидно, нет флага конфигурации для добавления --abbrev-commit в журнал git. Кроме того, в руководстве по git говорится, что я не могу создать псевдоним: "Чтобы избежать путаницы и проблем с использованием скриптов, псевдонимы, скрывающие существующие команды git, игнорируются"

Мой третий вариант - придумать новый псевдоним, например glog=log --abbrev-commit, в моем файле .gitconfig. Но я бы не стал изобретать свой собственный DSL с новыми командами.

Есть ли другой способ добиться этого, чтобы флаг abbrev-commit был установлен по умолчанию ??

Ответы [ 7 ]

53 голосов
/ 09 августа 2012

Начиная с git версии 1.7.6, в git config появилась опция log.abbrevCommit, для которой можно установить значение true. Таким образом, ответом является обновление по крайней мере до 1.7.6 (текущий на момент написания статьи 1.7.11.4) и использование:

git config --global log.abbrevCommit true
43 голосов
/ 27 января 2011

Вы можете использовать пользовательский формат, чтобы иметь git log mimic --abbrev-commit по умолчанию:

git config format.pretty "format:%h %s"
32 голосов
/ 23 марта 2010

В git нет общего механизма для установки аргументов по умолчанию для команд.

Вы можете использовать псевдонимы git , чтобы определить новую команду с необходимыми аргументами:

git config alias.lg "log --oneline"

Затем вы можете запустить git lg.

Некоторые команды также имеют параметры конфигурации для изменения их поведения.

10 голосов
/ 21 ноября 2011

VonC уже намекнул на оболочку оболочки в своем ответе; вот моя реализация Bash такой обертки. Если вы поставите это, например, в .bashrc ваша интерактивная оболочка будет поддерживать переопределение встроенных команд Git, а также псевдонимы в верхнем регистре.

# Git supports aliases defined in .gitconfig, but you cannot override Git
# builtins (e.g. "git log") by putting an executable "git-log" somewhere in the
# PATH. Also, git aliases are case-insensitive, but case can be useful to create
# a negated command (gf = grep --files-with-matches; gF = grep
# --files-without-match). As a workaround, translate "X" to "-x". 
git()
{
    typeset -r gitAlias="git-$1"
    if 'which' "$gitAlias" >/dev/null 2>&1; then
        shift
        "$gitAlias" "$@"
    elif [[ "$1" =~ [A-Z] ]]; then
        # Translate "X" to "-x" to enable aliases with uppercase letters. 
        translatedAlias=$(echo "$1" | sed -e 's/[A-Z]/-\l\0/g')
        shift
        "$(which git)" "$translatedAlias" "$@"
    else
        "$(which git)" "$@"
    fi
} 

Затем вы можете переопределить git log, поместив скрипт с именем git-log где-нибудь в вашу переменную PATH:

#!/bin/sh
git log --abbrev-commit "$@"
7 голосов
/ 09 мая 2012

У меня похожая проблема (многие опции по умолчанию для команд Git тупые). Вот мой подход. Создайте скрипт под названием «grit» (или любой другой) на вашем пути следующим образом:

#!/bin/bash
cmd=$1
shift 1
if [ "$cmd" = "" ]; then
  git
elif [ $cmd = "log" ]; then
  git log --abbrev-commit $@
elif [ $cmd = "branch" ]; then
  git branch -v $@
elif [ $cmd = "remote" ]; then
  git remote -v $@
else
  git $cmd $@
fi

Очень просто читать и поддерживать, если вам нужно поделиться им с экспертами Bash.

2 голосов
/ 23 марта 2010

Каждая используемая нами утилита (svn, maven, git, ...) всегда инкапсулируется в .bat (в Windows или .sh в Unix), чтобы предложить нашим разработчикам один каталог для добавления к их пути.

Если git инкапсулирован в скрипт-обертку, то ... все возможно.

Но это решение остается связанным с настройками пользователя, а не с самим Git или с репозиторием git.

1 голос
/ 15 июня 2018

Мне нравится формат git log --oneline. Чтобы получить его по умолчанию, используйте

git config --global format.pretty oneline

Кредит: https://willi.am/blog/2015/02/19/customize-your-git-log-format/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...