Клонирование и Fetch¶
Команды для получения репозитория с удаленного сервера и загрузки обновлений.
Git Clone (Клонирование)¶
Создает полную локальную копию удаленного репозитория, включая всю историю коммитов, ветки и настройки.
Базовое клонирование¶
git clone <URL>
Примеры:
# Через HTTPS
git clone https://github.com/DaniilGavrin/git-guide.git
# Через SSH (рекомендуется)
git clone git@github.com:DaniilGavrin/git-guide.git
Клонирование в конкретную папку¶
По умолчанию Git создаст папку с именем репозитория. Можно указать свое имя:
git clone <URL> my-project
Клонирование конкретной ветки¶
Если вам нужна только определенная ветка (например, develop):
git clone -b <имя-ветки> <URL>
Пример:
git clone -b develop https://github.com/user/repo.git
Клонирование с глубиной истории (Shallow Clone)¶
Для больших репозиториев можно скачать только последние N коммитов:
git clone --depth 1 <URL>
Это скачает только последний коммит. Полезно для CI/CD или быстрого ознакомления с кодом, но не подходит для полноценной разработки (не будет полной истории).
Git Fetch (Загрузка изменений)¶
fetch загружает изменения из удаленного репозитория, но не меняет ваши локальные файлы и не сливает изменения.
Загрузка всех обновлений¶
git fetch origin
Скачивает все новые коммиты, ветки и теги с сервера origin.
Загрузка конкретной ветки¶
git fetch origin <имя-ветки>
Просмотр загруженных изменений¶
После fetch можно посмотреть, что изменилось на сервере:
# Разница между вашей текущей веткой и удаленной
git log HEAD..origin/main
# Какие файлы изменились
git diff --name-status HEAD origin/main
Слияние после Fetch¶
После просмотра вы можете вручную слить изменения:
git merge origin/main
Или сделать rebase:
git rebase origin/main
Сравнение Fetch и Pull¶
| Команда | Что делает | Когда использовать |
|---|---|---|
git fetch |
Только скачивает данные, не меняет файлы | Когда хотите сначала посмотреть изменения перед слиянием |
git pull |
Скачивает и сразу делает merge | Когда уверены, что хотите сразу получить обновления |
Совет: Используйте
fetch+ ручнойmerge/rebase, если работаете над важной задачей и хотите контролировать процесс слияния.
Обновление списка удаленных веток¶
Если коллега создал новую ветку на сервере, но вы её не видите:
git fetch --prune
Флаг --prune также удаляет локальные ссылки на ветки, которые были удалены на сервере.