Настройка поведения Git: конфигурация, алиасы и важные файлы
Настройте Git с помощью полезных параметров конфигурации, понятных алиасов и ключевых файлов, таких как .gitignore и .gitattributes.
Настройка поведения Git: конфигурация, алиасы и важные файлы
Настройка поведения Git помогает сделать повседневное управление версиями быстрее, безопаснее и предсказуемее. С правильной конфигурацией Git, алиасами и важными файлами ваш локальный рабочий процесс может соответствовать тому, как ваша команда на самом деле создает программное обеспечение.
Цель не в том, чтобы создать хитрую настройку, которую никто другой не понимает. Цель — устранить трения при выполнении общих задач, сохраняя при этом ваши репозитории легкими для аудита и поддержки.
Как работает конфигурация Git
Git считывает настройки из нескольких мест, и чем ближе настройка, тем она приоритетнее. Это важно, когда вы отлаживаете, почему Git использует неправильное имя, редактор, инструмент слияния, окончания строк или поведение подписи.
Три основных области конфигурации:
- Системная: применяется к каждому пользователю на машине.
- Глобальная: применяется к вашей учетной записи пользователя.
- Локальная: применяется только к текущему репозиторию.
Обычно вы работаете с глобальными и локальными настройками. Глобальные настройки хороши для вашей идентификации, редактора по умолчанию и общих алиасов. Локальные настройки лучше подходят для поведения, специфичного для репозитория, например, другого адреса электронной почты для рабочих проектов.
Используйте эти команды, чтобы проверить, откуда берется настройка:
git config --list --show-origin
git config user.email
git config --local user.email
git config --global user.email
Например, вы можете использовать личную электронную почту глобально:
git config --global user.name "Алекс Морган"
git config --global user.email "[email protected]"
Затем, внутри рабочего репозитория, переопределите только электронную почту:
git config --local user.email "[email protected]"
Это позволяет избежать случайной фиксации в корпоративном репозитории с личной идентификацией. Это также делает историю коммитов более чистой для соответствия требованиям, владения и проверки кода.
Если вам нужно более глубокое освещение настроек идентификации, см. освоение конфигурации пользователя Git.
Полезные настройки для первоначальной настройки
Начните с настроек, которые улучшают ясность и предотвращают мелкие ошибки. Вам не нужен огромный конфигурационный файл, чтобы получить реальную пользу.
Хорошая базовая линия включает имя вашей ветки по умолчанию:
git config --global init.defaultBranch main
Установите предпочитаемый редактор, чтобы Git мог открывать сообщения коммитов, планы перебазирования и заметки о слиянии в инструменте, который вы действительно используете:
git config --global core.editor "code --wait"
Если вы работаете в macOS, Linux и Windows, окончания строк заслуживают внимания. Многие команды предпочитают нормализовать окончания строк в репозитории и позволить каждому редактору разработчика обрабатывать отображение. Распространенная настройка для Windows:
git config --global core.autocrlf true
В macOS или Linux команды часто используют:
git config --global core.autocrlf input
Не меняйте настройки окончаний строк небрежно в существующем репозитории. Если вы видите огромный diff, где каждая строка кажется измененной, остановитесь и проверьте .gitattributes перед фиксацией.
Вы также можете сделать вывод Git более читаемым:
git config --global color.ui auto
git config --global column.ui auto
git config --global branch.sort -committerdate
git config --global tag.sort version:refname
Для получения изменений выберите поведение, которое ожидает ваша команда:
git config --global pull.rebase false
или:
git config --global pull.rebase true
Ни один из вариантов не является универсально правильным. Pull на основе слияния сохраняет коммиты слияния. Pull на основе перебазирования поддерживает линейную локальную историю. Важно сделать выбор осознанно и документировать ожидания команды.
Создание алиасов Git, экономящих время
Алиасы Git превращают длинные команды в короткие, запоминающиеся сокращения. Они особенно полезны для команд, которые вы запускаете много раз в день.
Вот практичные алиасы, которые остаются читаемыми:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.last "log -1 HEAD --stat"
git config --global alias.unstage "restore --staged"
После этого git st дает вам статус, а git unstage file.txt удаляет файл из области подготовки, не затрагивая вашу рабочую копию.
Алиасы для лога — это то, где многие команды получают наибольшую пользу:
git config --global alias.lg "log --oneline --decorate --graph --all"
Теперь вы можете запустить:
git lg
Это дает компактный граф веток, тегов и коммитов. Это полезно перед перебазированием, слиянием или очисткой локальных веток.
Делайте алиасы достаточно простыми, чтобы коллега мог догадаться, что они делают. Алиас типа git save может означать коммит, stash или что-то еще в зависимости от того, кто его создал. Алиас типа git unstage очевиден.
Вы можете просмотреть свои алиасы с помощью:
git config --global --get-regexp '^alias\.'
Больше примеров см. в создании пользовательских алиасов Git.
Важные файлы Git, которые вы должны знать
Поведение Git контролируется не только git config. Несколько файлов репозитория определяют, что отслеживается, игнорируется, нормализуется и защищается.
Самый распространенный файл — .gitignore. Он сообщает Git, какие неотслеживаемые файлы игнорировать. Типичные записи включают выходные данные сборки, локальные файлы окружения, папки редактора и кэши зависимостей:
node_modules/
dist/
.env
.DS_Store
Будьте осторожны с широкими шаблонами. Игнорирование *.json может скрыть сгенерированные файлы, но также может скрыть важную конфигурацию. По возможности игнорируйте конкретные каталоги или имена файлов.
Файл .gitattributes управляет тем, как Git обрабатывает типы файлов. Он полезен для окончаний строк, сгенерированных файлов, поведения linguist и стратегий слияния:
* text=auto
*.sh text eol=lf
*.bat text eol=crlf
Это особенно полезно в командах, использующих разные операционные системы. Это уменьшает шумные diffs и предотвращает поломку скриптов из-за неправильных окончаний строк.
Файл .git/config хранит локальную конфигурацию репозитория. Обычно вы редактируете его с помощью git config --local, но его чтение может помочь вам устранить неполадки с удаленными репозиториями, отслеживанием веток и опциями, специфичными для репозитория.
Хуки Git находятся в .git/hooks/. Они могут запускать скрипты перед коммитами, пушами, слияниями и другими событиями. По умолчанию хуки являются локальными и не фиксируются как активные скрипты. Команды, которые полагаются на хуки, часто используют скрипт настройки или менеджер хуков для их единообразной установки.
Когда обращаться за помощью
Большинство изменений конфигурации Git безопасны, но некоторые могут нарушить работу команды, если применяются без контекста. Спросите старшего инженера, DevOps-инженера или владельца репозитория перед изменением правил окончаний строк, драйверов слияния, требований к подписи или общего поведения хуков.
Вам также следует обратиться за помощью, если коммиты появляются с неправильной идентификацией в защищенном репозитории. Исправление метаданных автора после того, как код был отправлен, может потребовать переписывания истории, что повлияет на всех, кто использует эту ветку.
Если Git внезапно ведет себя иначе, начните с git config --list --show-origin. Эта одна команда часто объясняет загадку быстрее, чем догадки.
Продуманная настройка делает Git менее повторяющимся, не скрывая происходящего. Держите алиасы понятными, документируйте правила репозитория и используйте локальные настройки, когда один проект требует иного поведения, чем остальная часть вашей машины.