Распределённая система контроля версий: каждый клон содержит полную историю, работа без сети возможна. Хранилище — DAG из коммитов, ссылающихся на снапшоты деревьев.
Основные концепции
- Repository — хранилище проекта, локальное и/или удалённое.
- Commit — снапшот состояния файлов + ссылка на родителя/родителей.
- Branch — именованный указатель на коммит.
- Merge — объединение веток, создаёт merge-commit (или fast-forward).
- HEAD — текущая ветка/коммит.
Часто используемые команды
Команды, требующие осторожности
git reflog хранит локальный журнал перемещений refs. По умолчанию reachable entries истекают примерно через 90 дней (gc.reflogExpire), unreachable — примерно через 30 дней (gc.reflogExpireUnreachable). Это помогает восстановить коммит после reset --hard, неудачного rebase или удаления ветки:
git reflog
git reset --hard HEAD@{2}
Полезные практики
- маленькие коммиты с осмысленными сообщениями;
- перед
pushсинхронизация с remote (fetch+merge/rebaseпо политике команды); .gitignoreдля временных и бинарных файлов;--force-with-leaseвместо--force.