Close

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 можно добавить аргументы. Доступны следующие уровни конфигурации:

git branch
Связанные материалы

git branch

Логотип Bitbucket
СМ. РЕШЕНИЕ

Изучите Git с помощью Bitbucket Cloud

  • --local

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

  • --global

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

Команда config

~ git config --global core.editor "atom --wait"~

emacs

Команда config

~ git config --global core.editor "emacs"~

nano

Команда config

~ git config --global core.editor "nano -w"~

vim

Команда config

~ git config --global core.editor "vim"~

Sublime Text (Mac)

Команда config

~ git config --global core.editor "subl -n -w"~

Sublime Text (Win, 32-разрядная версия)

Команда config

~ git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"~

Sublime Text (Win, 64-разрядная версия)

Команда config

~ git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"~

Textmate

Команда config

~ 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
  • красный
  • 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= — определяет, сколько позиций символов занимает символ табуляции. Значение по умолчанию: 8. Допустимые значения: от 1 до 63.

Резюме


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

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

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


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Люди сотрудничают друг с другом, используя стену со множеством инструментов

Блог Bitbucket

Рисунок: DevOps

Образовательные программы DevOps

Демонстрация функций в демо-зале с участием экспертов Atlassian

Как инструмент Bitbucket Cloud работает с Atlassian Open DevOps

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up