git init и git clone

Команды для создания нового репозитория с нуля или получения копии существующего удалённого репозитория.

Зачем нужно

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

Где используется

  • Старт нового проекта: git init в пустой или уже существующей папке
  • Получение open-source проекта с GitHub/GitLab для изучения или участия
  • Клонирование рабочего репозитория на новую машину или в CI/CD-среду
  • Создание локального bare-репозитория для работы в команде без хостинга

Основной контент

git init

# Инициализировать репозиторий в текущей папке
git init

# Инициализировать в новой папке (папка создастся автоматически)
git init my-project

# Создать bare-репозиторий (без рабочей директории, только данные)
git init --bare my-project.git

После git init в папке появляется скрытая директория .git/ — она хранит всю историю и конфигурацию репозитория.

git clone

# Клонировать по HTTPS
git clone https://github.com/user/repo.git

# Клонировать по SSH (требует настроенного SSH-ключа)
git clone git@github.com:user/repo.git

# Клонировать в конкретную папку
git clone https://github.com/user/repo.git my-folder

# Клонировать только одну ветку
git clone --branch main --single-branch https://github.com/user/repo.git

# Клонировать без полной истории (shallow clone — быстрее для CI)
git clone --depth 1 https://github.com/user/repo.git

# Клонировать с субмодулями
git clone --recurse-submodules https://github.com/user/repo.git

Что происходит при clone

git clone <url>
  1. Создаёт папку с именем репозитория
  2. Инициализирует .git/
  3. Добавляет remote с именем "origin", указывающий на <url>
  4. Загружает все данные (commits, branches, tags)
  5. Checkout: создаёт рабочую копию ветки по умолчанию (main/master)
# Проверить remote после клонирования
git remote -v
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

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

  • Запустить git init внутри другого репозитория — получится вложенный репозиторий, Git начнёт путаться; проверяй git rev-parse --show-toplevel
  • Клонировать через HTTPS без токена в корпоративной среде — лучше сразу настроить SSH-ключ или Personal Access Token
  • Забыть --recurse-submodules — репозиторий с субмодулями будет скачан без их содержимого
  • Не проверить права доступа — после git clone по SSH получить Permission denied (publickey) из-за несовпадения ключей

Связанные темы

Ресурсы