git config

В этом документе мы подробнее изучим команду git config. Мы уже вкратце рассмотрели использование git config на странице Настройка репозитория. Команда git config — это удобная функция, которая используется для установки значений конфигурации Git на глобальном или локальном уровне проекта. Эти уровни конфигурации соответствуют текстовым файлам .gitconfig. При выполнении команды git config происходит изменение текстового файла конфигурации. Мы рассмотрим общие параметры конфигурации, такие как электронная почта, имя пользователя и редактор, а также обсудим псевдонимы Git, позволяющие создавать сокращенные команды для наиболее часто используемых операций Git. Освоив команду git config и различные параметры конфигурации Git, вы сможете создать сложный персонализированный рабочий процесс в Git.

Использование

Самый простой пример использования git config — вызов этой команды с именем конфигурации. При этом будет показано заданное для этого имени значение. Имена конфигурации представляют собой строку, состоящую из иерархической последовательности «раздела» и «ключа», отделенных друг от друга точкой. Пример: user.email

git config user.email

В этом примере «email» является дочерним свойством блока конфигурации «user». Команда вернет адрес электронной почты (если таковой был указан), который Git свяжет с локально созданными коммитами.

Уровни и файлы git config

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

  • --local

По умолчанию, если не были переданы опции конфигурации, команда git config будет вести запись на локальном уровне. Конфигурация локального уровня применяется к репозиторию, в котором вызывается команда git config. Значения локальной конфигурации хранятся в файле, который находится в каталоге .git репозитория: .git/config.
 

  •  --global

Конфигурация глобального уровня зависит от пользователя, то есть применяется к пользователю операционной системы. Значения глобальной конфигурации хранятся в файле, который находится в домашнем каталоге пользователя. Это ~ /.gitconfig в Unix-системах и C:\Users\<имя_пользователя>\.gitconfig в системах Windows.
 

  •  --system

Конфигурация уровня системы применяется ко всей машине. Она охватывает всех пользователей операционной системы и все репозитории. Конфигурация уровня системы указывается в файле gitconfig в корневой папке системы. В Unix-системах это $(prefix)/etc/gitconfig, в системах Windows файл находится в C:\Documents and Settings\All Users\Application Data\Git\config для Windows XP и в C:\ProgramData\Git\config для Windows Vista и более новых версий.

Итак, порядок приоритета уровней конфигурации следующий: локальный, глобальный, системный. Это значит, что при поиске значения конфигурации система Git будет начинать с локального уровня и подниматься до уровня системы.
 

Запись значения

Для расширения знаний о git config рассмотрим пример записи значения:

git config --global user.email "your_email@example.com"

В данном примере значение your_email@example.com будет записано в имя конфигурации user.email. Поскольку используется флаг --global, значение будет задано для текущего пользователя операционной системы.

Редактор git config — core.editor

Многие команды Git запускают текстовый редактор, чтобы запросить дальнейший ввод информации. Один из наиболее частых примеров использования команды git config — это настройка редактора, который должен применяться в Git. Ниже приведена таблица наиболее популярных редакторов и соответствующие команды git config.

Редактор Команда config
Atom ~ git config --global core.editor "atom --wait"~
emacs ~ git config --global core.editor "emacs"~
nano ~ git config --global core.editor "nano -w"~
vim ~ git config --global core.editor "vim"~
Sublime Text (Mac) ~ git config --global core.editor "subl -n -w"~
Sublime Text (Win, 32-разрядная версия) ~ git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"~
Sublime Text (Win, 64-разрядная версия) ~ git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"~
Textmate ~ git config --global core.editor "mate -w"~

 

Инструменты слияния

При возникновении конфликта слияния Git запускает «инструмент слияния». По умолчанию в Git используется внутренняя реализация обычной Unix-программы diff. Внутренняя программа diff в Git представляет собой простейшее средство для просмотра конфликтов слияния. Вместо нее можно использовать любое другое стороннее решение для разрешения конфликтов. Обзор различных инструментов слияния и конфигурации см. в руководстве по советам и инструментам для решения конфликтов с помощью Git

git config --global merge.tool kdiff3

Выделение выводимой информации цветом

Git поддерживает выделение выводимой в терминале информации различными цветами, что помогает быстро читать вывод Git. Для настройки вывода Git можно использовать индивидуальную цветовую тему. Для установки значений цветов используется команда git config.

color.ui

Это основная переменная, влияющая на выделение цветом в Git. Если задать этой переменной значение false, выделение любой выводимой в терминале Git информации цветом будет отключено.
 

$ git config --global color.ui false

Значение переменной color.ui по умолчанию равно auto. Это означает, что выделяться цветом будет только непосредственно выходной поток терминала. Если же выходной поток перенаправляется в файл или передается другому процессу, то такой вывод цветом не выделяется.

Можно указать для переменной color.ui значение always. Тогда вывод будет выделяться цветом в том числе и при перенаправлении выходного потока в файлы или конвейеры. Однако это может привести к возникновению проблем, поскольку принимающий конвейер может не ожидать, что входные данные будут иметь цветовую кодировку.

Значения цветов в Git

Помимо переменной color.ui, доступны и более тонкие настройки цвета. Как и в случае с color.ui, всем цветовым параметрам можно указать значения false, auto или always. Кроме того, этим цветовым параметрам можно задать конкретное значение цвета. Вот несколько примеров поддерживаемых значений цвета:

  • normal
  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white

Цвет также можно указывать в виде шестнадцатеричного цветового кода, например #ff0000, или в виде одного из 256 цветовых значений ANSI, если ваш терминал их поддерживает.

Настройка цветовой конфигурации в Git

1. color.branch 

  • Настраивает цвет вывода команды git branch. 

2. color.branch.<слот

  • Это значение также применяется к выводу команды git branch. Переменная <слот> может принимать одно из следующих значений: 
    • 1) current: текущая ветка; 
    • 2) local: локальная ветка; 
    • 3) remote: ссылка на удаленную ветку в refs/remotes; 
    • 4) upstream: вышестоящая отслеживаемая ветка; 
    • 5) plain: любая другая ссылка.

3. color.diff 

  • Применяет цвета к выводу команд git diff, git log и git show

4. color.diff.<слот

  • Значение <слот> в параметре color.diff указывает системе Git, в какой части команды diff использовать указанный цвет: 
    • 1) context: текст контекста diff. Контекст Git — это строки текстового контекста в diff или patch, которые подсвечивают изменения; 
    • 2) plain: синоним контекста; 
    • 3) meta: применяет цвет к метаданным diff; 
    • 4) frag: применяет цвет к заголовку участка кода или к функции в заголовке участка кода; 
    • 5) old: окрашивает удаленные строки в diff; 
    • 6) new: окрашивает добавленные строки в diff; 
    • 7) commit: окрашивает заголовки коммитов в diff; 
    • 8) whitespace: задает в diff цвет для любых ошибок, связанных с пробелами.

5. color.decorate.<слот

  • Настройка цвета для вывода команды git log --decorate. Поддерживаемые значения параметра <слот>: branch, remoteBranch, tag, stash или HEAD. Они применяются к локальным веткам, удаленным отслеживаемым веткам, тегам, отложенным изменениям и указателю HEAD соответственно. 

6. color.grep

  • Применяет цвет к выводу команды git grep. 

7. color.grep.<слот

  • Применяется также для команды git grep. Переменная <слот> указывает, к какой части вывода команды grep применить цвет: 
    • 1) context: несоответствующий текст в строках контекста; 
    • 2) filename: префикс имени файла; 
    • 3) function: строки с именами функций; 
    • 4) linenumber: префикс номера строки; 
    • 5) match: соответствующий текст; 
    • 6) matchContext: соответствующий текст в строках контекста; 
    • 7) matchSelected: соответствующий текст в выбранных строках; 
    • 8) selected: несоответствующий текст в выбранных строках; 
    • 9) separator: разделители между полями в строке (:, -, и =) и между участками кода (--). 

8. color.interactive 

  • Эта переменная задает цвет для интерактивных подсказок и демонстраций. Примеры: git add --interactive и git clean --interactive 

9. color.interactive.<слот> 

  • Переменная <слот> используется для уточнения вида интерактивного вывода. Доступные значения переменной <слот>: prompt, header, help, error; каждая из них действует на соответствующий вид интерактивного вывода (подсказку, заголовок, справочное сообщение, ошибку). 

10. color.pager

  • Включает или отключает выделение выводимой информации цветом при использовании пейджера. 

11. color.showBranch 

  • Включает или отключает выделение выводимой информации цветом для команды git show-branch. 

12. color.status 

  • Логическое значение, которое включает или отключает выделение выводимой информации цветом для команды git status. 

13. color.status.<слот>

Используется для того, чтобы задать пользовательский цвет для указанных элементов git status. Переменная <слот> поддерживает следующие значения:

  • 1) header:
    • указывает на текст заголовков в области состояния;
  • 2) added или updated:
    • оба значения указывают на файлы, которые были добавлены, но не отправлены;
  • 3) changed:
    • указывает на файлы, которые были изменены, но не добавлены в индекс Git;
  • 4) untracked:
    • указывает на файлы, которые не отслеживаются системой Git;
  • 5) branch:
    • применяет цвет к текущей ветке.
  • 6) nobranch:
    • цвет предупреждения о том, что ветка отсутствует;
  • 7) unmerged:
    • окрашивает файлы, в которых есть неслитые изменения.

Псевдонимы

Концепция псевдонимов может быть вам знакома по командной строке операционной системы. Если нет, то это пользовательские сокращенные команды, которые расширяются до более длинных или комбинированных команд. Псевдонимы экономят время и силы на ввод часто используемых команд. Git предоставляет собственную систему псевдонимов. Чаще всего псевдонимы Git используются для сокращения команды commit. Псевдонимы хранятся в конфигурационных файлах Git. Это значит, что для настройки псевдонимов можно использовать команду git config.

git config --global alias.ci commit

В этом примере создается псевдоним ci для команды git commit. После этого вы сможете вызывать команду git commit с помощью команды git ci. Псевдонимы также могут ссылаться на другие псевдонимы для создания более сложных сочетаний команд.

git config --global alias.amend ci --amend

В этом примере создается псевдоним amend, который объединяет псевдоним ci в новый псевдоним, использующий флаг --amend.

Форматирование и пробелы

В Git есть функции для подсвечивания ошибок с пробелами при использовании git diff. Ошибки с пробелами будут выделяться цветом, указанным в color.diff.whitespace

Следующие функции по умолчанию включены:

  • blank-at-eol — подсвечивает висячие пробелы в конце строк;
  • space-before-tab — подсвечивает пробелы перед символом табуляции в строках с отступом;
  • blank-at-eof — подсвечивает пустые строки, вставленные в конец файла.

Следующие функции по умолчанию отключены:

  • indent-with-non-tab — подсвечивает строку, в которой используются пробелы вместо символов табуляции;
  • tab-in-indent — подсвечивает как ошибку отступ, начинающийся с символа табуляции;
  • trailing-space — сокращение для функций blank-at-eol и blank-at-eof;
  • cr-at-eol — подсвечивает символ возврата каретки в конце строки;
  • tabwidth=<n> — определяет, сколько позиций символов занимает символ табуляции. Значение по умолчанию: 8. Допустимые значения: от 1 до 63.

Резюме

В этой статье мы рассказали, как использовать команду git config; объяснили, почему эта команда удобна для редактирования исходных файлов git config в файловой системе, и рассмотрели основные операции чтения и записи для параметров конфигурации. Кроме того, мы изучили распространенные сценарии конфигурации:

  • настройка редактора Git;
  • переопределение уровней конфигурации;
  • сброс значений по умолчанию для конфигурации;
  • настройка цветов в Git.

В целом git config — это вспомогательный инструмент, помогающий быстро редактировать исходные файлы git config на диске. Мы подробно рассмотрели параметры индивидуальной настройки. Если вы захотите настроить репозиторий, вам обязательно понадобятся базовые знания параметров конфигурации Git. Демонстрацию основ работы см. в нашем руководстве.
 

Готовы изучить Git?

Попробуйте это интерактивное учебное руководство.

Начните прямо сейчас