Как изменить глобальные настройки Git?

«Как изменить глобальные настройки Git?» — вопрос из категории Git, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps-работе глобальные настройки Git часто настраиваются один раз на рабочей станции или в CI/CD-окружении, но также могут управляться через скрипты для обеспечения консистентности в команде.

Основная команда:

git config --global <key> <value>

Ключевые настройки для DevOps-инженера:

  • Идентификация:
    git config --global user.name "John Doe"
    git config --global user.email "john.doe@company.com"
  • Редактор по умолчанию (для написания коммитов):
    git config --global core.editor "vim"  # или "code --wait", "nano"
  • Настройка merge-стратегии и дифф-инструмента:
    git config --global merge.tool vimdiff
    git config --global diff.tool vimdiff
  • Алиасы для ускорения работы:
    git config --global alias.co checkout
    git config --global alias.br branch
    git config --global alias.ci commit
    git config --global alias.st status
    git config --global alias.unstage 'reset HEAD --'
    git config --global alias.last 'log -1 HEAD' # Полезно для быстрой проверки последнего коммита
  • Поведение по умолчанию:
    git config --global push.default current  # `git push` без аргументов отправляет текущую ветку
    git config --global pull.rebase true      # Делает `git pull` эквивалентным `git pull --rebase`
    git config --global init.defaultBranch main # Устанавливает main как ветку по умолчанию

Просмотр и управление конфигурацией:

  • Просмотреть все глобальные настройки:
    git config --global --list
  • Файл конфигурации находится по пути ~/.gitconfig (Linux/macOS) или %USERPROFILE%.gitconfig (Windows). Его можно версионировать или разворачивать через инструменты вроде Ansible.

Для CI/CD-агентов настройки (особенно user.email и user.name) часто задаются через переменные окружения или параметры в конфигурации пайплайна (например, в .gitlab-ci.yml или Jenkinsfile), а не через глобальную конфигурацию.