← Back to notes

Git

2025-10-26


Распределённая система контроля версий: каждый клон содержит полную историю, работа без сети возможна. Хранилище — 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.

Ссылки

Git | Aleksandr Suprun