Перейти к содержанию

Клонирование и 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 также удаляет локальные ссылки на ветки, которые были удалены на сервере.


Назад: Push и Pull → | Далее: Reset и Restore →