</> Praktum

Главная / Git / git clone

Справочник · Git

git clone: копия репозитория на компьютер

Редакция PraktumОбновлено 7 мин чтенияУровень: новичок

Команда git clone скачивает удалённый репозиторий целиком — все файлы и всю историю коммитов — в новую папку на компьютере. Достаточно передать адрес: git clone https://github.com/user/project.git. После клонирования можно работать с проектом локально и отправлять изменения обратно через git push.

Коротко
  • git clone адрес — создаст папку с именем репозитория.
  • git clone адрес папка — в папку с другим именем, . — в текущую пустую.
  • HTTPS проще для старта, SSH удобнее при частой работе.
  • Для приватного репозитория по HTTPS нужен токен, а не пароль от GitHub.
  • Удалённый репозиторий автоматически получает имя origin.

Минимальный пример

git clone https://github.com/user/praktum-site.git
cd praktum-site
git status

Git создаст папку praktum-site, скачает в неё файлы и историю, переключится на основную ветку. После cd в эту папку проект готов к работе: git status покажет «nothing to commit, working tree clean».

Что делает git clone

Что появляется после клонирования
ЧтоЗачем
Папка проектарабочие файлы основной ветки
Скрытая папка .gitвся история коммитов и настройки репозитория
Удалённый репозиторий originадрес, откуда склонировали; туда делают pull и push
Ветки вида origin/mainкопии веток с сервера на момент клонирования
Локальная ветка mainсвязана с origin/main для pull и push

Проверить адрес удалённого репозитория можно командой git remote -v, список всех веток — git branch -a.

В какую папку клонировать

git clone https://github.com/user/praktum-site.git              # папка praktum-site
git clone https://github.com/user/praktum-site.git my-site      # папка my-site
mkdir site && cd site && git clone https://github.com/user/praktum-site.git .  # в текущую

Точка в конце означает «в текущую папку» — она должна быть пустой. Не клонируй репозиторий внутрь другого репозитория: получится вложенная папка с собственным .git, и внешний Git перестанет видеть её файлы как обычные.

HTTPS или SSH

git clone https://github.com/user/project.git   # HTTPS
git clone git@github.com:user/project.git       # SSH

Адрес обоих видов есть на странице репозитория на GitHub под кнопкой Code. Публичный репозиторий по HTTPS скачивается без всякой настройки. Для приватного и для push по HTTPS нужен вход: GitHub не принимает пароль от аккаунта — нужен персональный токен или менеджер учётных данных (Git Credential Manager на Windows открывает окно входа сам). SSH требует один раз создать ключ и добавить его в настройки GitHub, зато потом не спрашивает пароль.

Полезные параметры

Параметры git clone
ПараметрЧто делает
--branch dev или -b devсразу переключиться на ветку dev
--single-branchскачать только одну ветку
--depth 1только последний коммит, без истории — быстро и мало места
--recurse-submodulesскачать и вложенные подмодули
--origin upstreamназвать удалённый репозиторий не origin
git clone --depth 1 --branch main https://github.com/user/big-project.git

Неглубокий клон (--depth 1) удобен, чтобы быстро посмотреть код или собрать проект. Если потом понадобится вся история, её можно докачать командой git fetch --unshallow.

Что делать после клонирования

git pull                       # забрать новые изменения с сервера
git switch -c feature/header   # создать ветку для своей работы
# … правки …
git add .
git commit -m "Добавить шапку"
git push -u origin feature/header

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

Clone или fork

git clone — команда Git: копия репозитория на твоём компьютере. Fork — функция GitHub: копия чужого репозитория в твоём аккаунте на сервере. Если у тебя нет права записи в чужой проект, сначала делают fork, затем клонируют свой fork, работают в нём и предлагают изменения автору через pull request.

Частые ошибки при клонировании

Сообщения об ошибках
СообщениеПричина и решение
Repository not foundопечатка в адресе, репозиторий приватный или нет доступа; проверь адрес и вход
Permission denied (publickey)SSH-ключ не создан или не добавлен в GitHub; добавь ключ или клонируй по HTTPS
Authentication failedпо HTTPS ввели пароль от аккаунта вместо токена
destination path already existsпапка с таким именем уже есть и не пуста; укажи другое имя
'git' is not recognizedGit не установлен или не добавлен в PATH

git clone или скачать ZIP

git clone

Вся история, связь с сервером: можно делать pull, коммиты и push.

Download ZIP

Только текущие файлы без истории и без связи с репозиторием. Подходит, чтобы просто посмотреть код.

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

  • Вводят пароль от GitHub при клонировании приватного репозитория по HTTPS вместо токена.
  • Клонируют репозиторий внутрь другого репозитория.
  • Скачивают ZIP, а потом удивляются, что не работает git push.
  • Забывают cd в папку проекта и выполняют команды Git снаружи.
  • Клонируют заново при каждом обновлении вместо git pull.

Доступность

Git работает в терминале, который хорошо читается скринридерами. Для тех, кому неудобна командная строка, есть графические клиенты (GitHub Desktop, встроенный Git в VS Code): кнопка «Clone repository» выполняет ту же команду. Сообщения об ошибках Git текстовые — их можно скопировать и найти решение.

Поддержка браузерами

git clone работает одинаково в Git для Windows, macOS и Linux. Параметр --depth и протоколы HTTPS и SSH поддерживаются всеми современными версиями Git и хостингами GitHub, GitLab и Bitbucket.

Практика

Склонируй любой публичный репозиторий с GitHub в папку practice, проверь адрес удалённого репозитория и список веток. Затем сделай неглубокий клон того же репозитория в папку practice-light и сравни размер папок .git.

Показать решение
git clone https://github.com/user/project.git practice
cd practice
git remote -v
git branch -a
cd ..
git clone --depth 1 https://github.com/user/project.git practice-light
# сравни размеры: du -sh practice/.git practice-light/.git (macOS/Linux, Git Bash)

Открыть песочницу

Частые вопросы

Как склонировать репозиторий с GitHub?

Скопируй адрес на странице репозитория под кнопкой Code и выполни git clone адрес в терминале в нужной папке.

Как склонировать приватный репозиторий?

Нужен доступ к нему. По HTTPS — войди через менеджер учётных данных или используй персональный токен вместо пароля, по SSH — добавь свой ключ в настройки GitHub.

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

Добавь точку в конце: git clone адрес .. Папка должна быть пустой.

Как скачать только одну ветку?

git clone --branch имя --single-branch адрес. Добавь --depth 1, если история не нужна.

Чем clone отличается от pull?

clone один раз создаёт локальную копию репозитория. pull потом забирает новые изменения в уже склонированный проект.

Источники

Ещё в разделе Git