clone и fork: работа с чужими репозиториями
Два способа получить чужой репозиторий: clone — скопировать локально, fork — скопировать на GitHub под свой аккаунт.
git clone — скопировать репозиторий
git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git my-folder # в конкретную папку
git clone git@github.com:user/repo.git # через SSHclone делает три вещи автоматически:
- Копирует весь репозиторий с историей
- Настраивает
origin→ URL источника - Создаёт tracking branch
main→origin/main
Ничего настраивать вручную не нужно.
Глубина клонирования
По умолчанию clone скачивает всю историю. Для больших репозиториев это медленно:
git clone --depth 1 https://github.com/user/repo.git # только последний коммит
git clone --depth 10 URL # последние 10 коммитовShallow clone быстрее, но нельзя использовать git log в полную силу. Для CI/CD — нормально.
Fork — копия на GitHub
Fork нужен когда у тебя нет прав пушить в репозиторий:
- Open source проекты
- Репозитории других команд
- Публичные библиотеки
Fork создаётся через кнопку «Fork» на GitHub — получаешь полную копию под своим аккаунтом, в которую можно пушить.
Попробуй в симуляции
Полный цикл с fork
# 1. Fork на GitHub (кнопка Fork)
# 2. Clone своего fork
git clone https://github.com/ТВОЙ-АККАУНТ/repo.git
cd repo
# 3. Добавить upstream (оригинал)
git remote add upstream https://github.com/ОРИГИНАЛ/repo.git
# 4. Работать в отдельной ветке
git switch -c fix/typo-in-readme
# 5. Делать изменения и пушить в свой fork
git add .
git commit -m "fix: исправил опечатку"
git push origin fix/typo-in-readme
# 6. Создать Pull Request на GitHub
# fix/typo-in-readme (твой fork) → main (upstream)Держать fork в актуальном состоянии
Пока ты работаешь, upstream продолжает развиваться. Периодически обновляй:
git fetch upstream # скачать из upstream
git switch main
git merge upstream/main # обновить свой main
git push origin main # обновить свой fork на GitHubИли одной командой:
git pull upstream mainSSH vs HTTPS
# HTTPS — проще настроить, нужен токен при push
git clone https://github.com/user/repo.git
# SSH — удобнее при частом использовании
git clone git@github.com:user/repo.gitSSH ключ настраивается один раз в ~/.ssh/id_ed25519 + добавить публичный ключ в GitHub Settings → SSH keys. После этого push/pull без паролей.
Команды
git clone URL # клонировать
git clone URL folder # в указанную папку
git clone --depth 1 URL # shallow clone
git remote add upstream URL # добавить upstream
git fetch upstream # обновить из upstream
git merge upstream/main # влить upstream в localВ следующем модуле — продвинутый Git: rebase, stash и как переписывать историю.
f0e1d2c4b5c6d7# Репозиторий проекта на GitHub