git init: сделать из папки репозиторий

Обновлено 31 июля 2026 г.

git init превращает обычную папку в репозиторий: создаёт внутри неё скрытый каталог .git, где дальше будет лежать вся история проекта.

Команда нужна ровно один раз на проект, в самом начале. Зайди в папку с файлами (или создай пустую) и выполни:

$ mkdir my-first-repo
$ cd my-first-repo
$ git init
Initialized empty Git repository in /home/anna/my-first-repo/.git/

Одна строка ответа, и каталог стал репозиторием. Снаружи ничего не изменилось: твои файлы лежат где лежали, git их не трогает и не переписывает.

Что появилось в .git

Имена, которые начинаются с точки, файловый менеджер и обычный ls не показывают. Флаг -a снимает это скрытие:

$ ls -a
.  ..  .git
$ ls .git
HEAD  config  description  hooks  info  objects  refs

Каталог objects - хранилище снимков, там окажется содержимое всех версий всех файлов. HEAD - указатель на текущее место в истории. refs держит ветки и метки, config - настройки этого конкретного репозитория. Руками внутрь лазить не нужно: всё, что там лежит, меняется командами.

Удалишь .git - удалишь историю целиком, без корзины. Файлы проекта при этом уцелеют, но станут просто файлами.

init против clone

git init заводит пустую историю для проекта, которого ещё нет в git. git clone забирает уже существующий репозиторий с сервера вместе со всей его историей и сам создаёт папку. После clone делать init не нужно - это частая путаница первого дня.

Повторный git init в том же каталоге ничего не ломает и историю не стирает:

$ git init
Reinitialized existing Git repository in /home/anna/my-first-repo/.git/

Частые ошибки

Самая частая - выполнить git init в домашнем каталоге или прямо на рабочем столе. Git послушается и начнёт считать содержимым проекта всё подряд: загрузки, скриншоты, чужие папки, кэши программ. Репозиторий заводят под один конкретный проект, в его собственной папке.

Если уже успел, ничего страшного не произошло. Проверь через pwd, что стоишь именно в той папке, где случился лишний git init, и удали каталог:

$ pwd
/home/anna
$ rm -rf .git

Файлы останутся на месте. Путь проверь дважды: rm -rf ничего не переспрашивает.

Вторая ошибка - git init внутри уже существующего репозитория, в подпапке. Формально это разрешено, но получается вложенный репозиторий, за которым внешний не следит, и изменения в нём молча не попадают в коммиты.

Где это в учебнике

Тема разобрана здесь: Глава 2. Первый репозиторий.

Потренироваться руками - в интерактивном уроке Первый репозиторий.