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)из-за несовпадения ключей