Настройка и параметры Git
Команды из Команды Git для повседневной разработки часто принимают флаги — короткие (-m) и длинные (--message). Один и тот же флаг в разных подкомандах может означать разное: -v у git push даёт подробный лог, а у голого git -v — версию программы. Ниже — частые флаги, уровни настроек git config и ссылки на опасные комбинации (Опасные скрипты).
git commit --help, git help reset — официальное описание флагов для конкретной подкоманды.
Настройка и параметры Git
Параметры
Play ITЗагрузка интерактивного демо…
В Git существуют параметры (флаги), которые можно использовать с командами для изменения их поведения.
Короткие параметры начинаются с одного дефиса (-) и состоят из одной буквы.
Длинные параметры начинаются с двух дефисов (--) и обычно являются полными словами.
Несколько коротких флагов можно объединять: git commit -am "msg" = -a + -m (только для уже отслеживаемых файлов).
Справочник основных флагов
Вывод и диагностика
-v/--verbose— больше деталей в выводе конкретной команды (git push -v,git fetch -v). Уgitбез подкоманды-v— версия.--dry-run— показать, что произойдёт, без изменений (git clean -n,git push --dry-runгде поддерживается).--help— справка по подкоманде; для новичка самый надёжный источник.
git commit --help
Коммиты и сообщения
-m/--message— текст коммита в одну строку.--amend— изменить последний коммит (добавить файлы или поправить сообщение). На уже отправленную ветку — только с согласованием и часто с--force-with-lease(Команды Git для повседневной разработки).
git commit --amend -m "Исправлено сообщение"
Охват файлов и веток
-a/--all— вgit commit -aавтоматически stage уже отслеживаемых файлов; вgit branch -a— показать remote-ветки.
git branch -a
--cached/--staged— сравнение или операции с индексом, без рабочего каталога (git diff --staged).-p/--patch— интерактивный выбор кусков diff приaddилиcheckout -p.
Сброс и риск потери данных
--soft— приresetдвигает HEAD, оставляет индекс и рабочие файлы (git reset --soft HEAD~1).--hard— сбрасывает индекс и рабочую копию к указанному коммиту; незакоммиченное пропадает. Сначалаgit status, при ошибке —git reflog(Опасные скрипты, Особенности работы с репозиториями в Git).--force/-f— принудительное действие (push,clean,branch -D). В общих ветках предпочтительнее--force-with-lease.
git push --force-with-lease origin feature-x
История и слияния
--oneline— компактныйgit log.--graph— ASCII-граф веток вlog.--follow— история файла с учётом переименований (git log --follow -- path).--no-ff— merge-коммит даже при fast-forward (сохранить ветку в истории).--squash— все коммиты ветки в один при merge (без автоматического коммита доgit commit).--rebase— уpull: rebase вместо merge; уmergeне путать сgit rebase.
Прочие
--global/--local/--system— область действияgit config(см. ниже).--tags— включить теги приpush/fetch.--recurse-submodules— обход подмодулей приclone,pull,checkout.
Уровни git config
Настройки Git наследуются: system → global → local (.git/config перекрывает остальное).
| Уровень | Файл (типично) | Когда использовать |
|---|---|---|
--system | /etc/gitconfig | Политика на всех пользователей машины (редко) |
--global | ~/.gitconfig | Имя, email, алиасы, редактор |
--local | .git/config | Remote, хуки, core.sshCommand для одного проекта |
Минимум при первой установке:
git config --global user.name "Имя Фамилия"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global core.autocrlf true # Windows; на Linux — input
git config --global color.ui auto
Просмотр всех значений:
git config --list --show-origin
Локально для репозитория с отдельным SSH-ключом (см. Множественные сервисы Git на одном компьютере):
git config --local core.sshCommand "ssh -i ~/.ssh/id_ed25519_work -o IdentitiesOnly=yes"
Типичные путаницы
| Ситуация | Что помнить |
|---|---|
git commit -a | Не добавляет новые неотслеживаемые файлы — нужен git add |
git reset --hard vs git restore . | reset двигает ветку; restore откатывает файлы к HEAD |
git pull | Это fetch + merge/rebase; при конфликтах — 4.13 / 113 |
-f на clean | Удаляет неотслеживаемое; -fdx ещё и игнорируемое — см. Опасные скрипты |
Связанные материалы
- Архитектура Git — рабочий каталог, индекс, HEAD
- Команды на каждый день — полный список подкоманд
- Внутренности
.git— объекты, reflog - Опасные скрипты —
--hard,--force,gc
Готовые комбинации флагов
| Цель | Команда |
|---|---|
| Коммит всего отслеживаемого | git commit -am "msg" |
| Посмотреть, что уйдёт в push | git log origin/main..HEAD --oneline |
| Красивый лог | git log --oneline --graph --decorate -20 |
| Отменить staging одного файла | git restore --staged path |
| Merge без fast-forward | git merge --no-ff feature/x |
| Rebase с автосохранением меток | git rebase -i main (осторожно на pushed) |
| Push после rebase | git push --force-with-lease |
| Проверить clean без удаления | git clean -fdn (-n = dry-run) |
| Клон для CI | git clone --depth 1 --branch main |
git config — частые ключи
git config --global init.defaultBranch main
git config --global pull.rebase false # или true по политике команды
git config --global fetch.prune true # чистить мёртвые remote-ветки
git config --global core.longpaths true # Windows, длинные пути
git config --global core.hooksPath .githooks # общие хуки в репо ([Особенности работы с репозиториями в Git](./113.md))
Просмотр одного ключа: git config --get user.email.