Fetch без слияния

Тема дорожной карты · Изучи Git

git fetch — это команда, которая позволяет скачать новые объекты и обновить remote-tracking ссылки (origin/main, origin/feature/x, теги) без изменения ваших локальных веток и рабочей директории. Эта команда особенно полезна для тех, кто хочет убедиться, что его локальная копия репозитория актуальна, прежде чем вносить изменения или выполнять слияние. В отличие от git pull, который автоматически выполняет слияние или переустановку, git fetch предоставляет больше контроля и позволяет пользователю самостоятельно принять решение о слиянии или переустановке.

Как это работает

Fetch без слияния: git remote -v (показывает список настроенных удалённых репозиториев), git fetch <remote> (скачивает объекты и обновляет remote-tracking ссылки без выполнения слияния), git pull (эквивалентно fetch + merge или rebase), git push <remote> <branch> (загружает изменения в удалённый репозиторий). Origin — это стандартное имя для удалённого репозитория, который обычно указывает на основной источник репозитория. Remote-tracking ветки (origin/main) являются локальными зеркальными копиями состояния удалённого репозитория на момент последнего выполнения fetch. Для управления несколькими форками можно настроить несколько удалённых репозиториев (например, origin для своего форка и upstream для оригинального репозитория).

Когда применять

git fetch предпочтительнее git pull, когда вы хотите увидеть изменения в удалённом репозитории до выполнения слияния. Это позволяет вам проверить изменения и принять решение о слиянии или переустановке. Команда git push -u origin <branch> используется для установки upstream ссылки при первом выполнении push. Команда git fetch --prune полезна для периодического удаления ссылок на удалённые ветки, которые больше не существуют. Для работы с форками, вы можете настроить upstream-remote на оригинальный репозиторий и регулярно синхронизировать изменения.

Типичные ошибки

Типичные ошибки при использовании git fetch включают использование git push --force без параметра --force-with-lease, что может привести к перезаписи коммитов тиммейта, если ваш view remote отличается от реального состояния. Также, не забывайте очищать старые remote-tracking ветки с помощью параметра --prune. Наконец, не следует пушить личные ветки в общие (shared) удалённые репозитории, так как это может привести к появлению мусора. Вместо этого следует использовать персональное пространство имен, если это поддерживается.

Связанные понятия

Полезные ресурсы