git clone: скопировать чужой репозиторий

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

git clone забирает готовый репозиторий целиком: всю историю, все ветки и файлы последнего коммита.

Это первая команда, которую выполняешь, когда подключаешься к чужому проекту или переносишь свой на новый компьютер. Достаточно адреса, который на странице репозитория прячется за кнопкой «Code»:

$ git clone https://github.com/username/some-project.git
Cloning into 'some-project'...
remote: Enumerating objects: 128, done.
remote: Total 128 (delta 40), reused 118 (delta 30), pack-reused 0
Receiving objects: 100% (128/128), 24.31 KiB | 4.86 MiB/s, done.
Resolving deltas: 100% (40/40), done.

Одна команда делает три дела разом. Скачивает историю - все коммиты за все годы, а не только последнее состояние. Создаёт папку с именем проекта и раскладывает в ней файлы последнего коммита. Прописывает адрес сервера под именем origin, так что git push и git pull заработают без дополнительной настройки.

$ cd some-project
$ git remote -v
origin	https://github.com/username/some-project.git (fetch)
origin	https://github.com/username/some-project.git (push)

Своё имя папки

Второй аргумент задаёт имя каталога, который создастся:

$ git clone https://github.com/username/some-project.git my-copy

Точка вместо имени клонирует прямо в текущий каталог, но он должен быть пустым.

Неглубокий клон

У больших проектов история весит больше, чем сами файлы. Флаг --depth 1 берёт только последний коммит:

$ git clone --depth 1 https://github.com/git/git.git
$ cd git
$ git log --oneline | wc -l
1

В такой копии исходников самого git каталог .git весит 14 МБ: скачался один коммит, а не двадцать лет разработки. Годится, чтобы посмотреть код или собрать проект. Для работы над ним - нет: истории в неглубоком клоне нет, git log покажет один коммит, а часть команд откажется работать.

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

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

Клонировать в непустую папку git не станет:

$ git clone https://github.com/username/some-project.git ne
fatal: destination path 'ne' already exists and is not an empty directory.

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

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

Тема разобрана здесь: Глава 6. GitHub: облако и совместная работа.

Потренироваться руками - в Песочнице: настоящий терминал с git и проверка шагов.