Git Fetch: мастер-класс

Опубликовано: 2023-02-26
Ноутбук с Linux, показывающий окно терминала с рисунком земного шара на заднем плане и двоичным водяным знаком
Фатмавати Ачмад Заэнури/Shutterstock.com
Команда git fetch похожа на команду git pull, которая обновляет ваш локальный репозиторий информацией и делает коммиты из удаленного репозитория, не перезаписывая ваши рабочие файлы.

Команда Git fetch позволяет вам посмотреть, прежде чем прыгать. Вы можете узнать, какие изменения были внесены в удаленный репозиторий, но без перезаписи ваших локальных файлов удаленными файлами.

Оглавление

Что такое git fetch и что он делает?
Git выборка против вытягивания
Синхронизируйте свои локальные и удаленные репозитории с помощью git fetch
Просмотреть все извлеченные теги
Сначала делаем пробный прогон
Как получить одну ветку
Получить все ветки
Сравнение локальных и удаленных ветвей
Синхронизация локальной ветки с удаленной веткой
Недоученный щенок

Что такое git fetch и что он делает?

Команда fetch в Git безопасно загружает коммиты, файлы и другую информацию из удаленного репозитория в ваш локальный репозиторий. Используйте выборку, когда хотите увидеть, какие изменения внесли другие разработчики, не принуждая вас принимать эти изменения. Ваши локальные файлы остаются нетронутыми. Почему это важно?

Вы должны быть внимательны, когда работаете в команде разработчиков. Удаленный или центральный репозиторий будет содержать изменения и новые ветки, созданные другими разработчиками и отправленные в удаленный репозиторий.

Вполне возможно, что кто-то обновил удаленную копию файлов, которые вы изменили локально на своем компьютере. Если вы случайно выполняете git pull для обновления своего локального репозитория, вы, вероятно, обнаружите, что обрабатываете слияния для изменений, которые вам, возможно, даже не нужны.

После того, как вы загрузили информацию, вы можете изучить ее и посмотреть, в чем заключаются изменения. Это позволяет вам сделать осознанный выбор в отношении того, что вы хотите объединить прямо сейчас, а что отложить на потом.

Git выборка против вытягивания

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

Или, другими словами, команда git pull похожа на git fetch , за которой сразу же следует git merge .

Синхронизируйте свои локальные и удаленные репозитории с помощью git fetch

Чтобы получить все обновленные метаданные и коммиты из удаленного репозитория в локальный репозиторий, используйте команду git fetch с именем или URL-адресом удаленного репозитория. По умолчанию первый удаленный репозиторий называется «исходным».

 git получить происхождение

Слово «источник» можно опустить, если вы работаете с одним удаленным репозиторием.

 git fetch 

Использование команды git fetch в удаленном репозитории по умолчанию

Это извлекает все обновления из «исходного» репозитория, но не объединяет изменения в рабочие файлы. Мы видим, что есть новая ветвь, названная «new-branch», которая была получена для нас.

После того, как вы использовали команду fetch , вы можете увидеть полный список веток на удаленном компьютере, используя опцию -r (remote) с командой branch.

 ветка git -r 

Глядя на ветки, которые существуют на удаленном по умолчанию

Здесь перечислены все ветки, о которых знает удаленный сервер, которые после fetch также находятся в вашем локальном репозитории.

Просмотреть все извлеченные теги

Точно так же вы можете использовать параметр tag (обратите внимание, это «тег» без «s»), чтобы увидеть список тегов.

 git-тег 

Использование команды git tag для получения списка тегов в локальном репозитории.

СВЯЗАННЫЕ С: Как переключать, добавлять и удалять пульты Git

Сначала делаем пробный прогон

Хотя git fetch не объединяет изменения в ваши рабочие файлы, он все же обновляет ваш локальный репозиторий. Если вы хотите увидеть, какие изменения выполнит команда fetch , не внося их на самом деле, используйте параметр --dry-run .

 git fetch --сухой запуск 

Использование параметра --dry-run, чтобы увидеть изменения, которые получит команда fetch.

Как получить одну ветку

Получить информацию об отдельной ветке несложно. Добавьте имя ветки в командную строку, чтобы сообщить fetch вам нужно знать только об этой одной ветке.

Здесь мы указываем fetch получить ветку «mary-feature» из удаленного репозитория «origin».

 git fetch origin mary-feature 

Использование git fetch для получения одной удаленной ветки

Теперь, когда сведения и содержимое удаленной ветки находятся в вашем локальном репозитории, вы можете использовать команду git checkout для создания новой ветки и извлечения удаленной ветки. Это не перезапишет существующие файлы, если вы впервые используете эту ветку.

 git checkout -b мэри-функция происхождение/мэри-функция 

Безопасная проверка полученной удаленной ветки на новую локальную ветку

Получить все ветки

Если вы используете несколько пультов, вы можете сэкономить время, перетащив все изменения из всех веток обратно в локальный репозиторий с помощью параметра --all .

 git fetch --все

Сравнение локальных и удаленных ветвей

Чтобы увидеть, чем файлы в удаленной ветке отличаются от ваших локальных копий, используйте git fetch , а затем используйте команду git log .

Обратите внимание, что локальная и удаленная ветви разделены двумя точками « .. ». Параметр --oneline показывает идентификатор коммита и сообщение коммита.

 git fetch
 git log --oneline mary-feature..origin/mary-feature 

Использование git для получения удаленных изменений и git log для отображения изменений

Однострочное отображение полезно, если ветвь содержит большое количество изменений. Чтобы увидеть немного больше информации, опустите параметр --oneline .

 git log mary-feature..origin/mary-feature 

Опускание параметра --oneline, чтобы git отображал более подробную информацию о каждом коммите.

Это показывает нам время и дату каждой фиксации вместе с сообщением фиксации и контактными данными автора изменения.

Синхронизация локальной ветки с удаленной веткой

Если вы решили, что хотите продолжить и объединить изменения из удаленной ветки с вашими локальными рабочими файлами, вы можете использовать эти команды.

Мы проверим ветку, чтобы убедиться, что мы работаем, это наша текущая рабочая ветка.

 git checkout мэри-функция 

Проверка ветки

Ветка проверяется для нас, и нам говорят, что она находится за удаленной версией. Мы можем использовать git pull для его обновления, а затем git status для проверки нашего статуса.

 git тянуть
 статус git 

Вытягивание изменений из репозитория rmeote в локальный

Если мы внесли некоторые изменения в наши локальные файлы, Git сообщает нам, когда мы извлекаем ветку, что нам нужно выполнить git pull , чтобы начать слияние.

 git checkout мэри-функция 

Git сообщает нам, что локальная и удаленная ветви разошлись и их необходимо объединить.

Простой git pull запускает процесс извлечения файлов и слияния, или мы можем погрузиться прямо и использовать сам git merge . Мы начнем с того, что убедимся, что работаем с правильной веткой

 git checkout мэри-функция 

Git сообщает нам, что локальная и удаленная ветви разошлись и их необходимо объединить.

Мы скажем git объединить нашу текущую ветку с веткой в ​​удаленном репозитории, есть шесть разных коммитов, которые необходимо разрешить.

Сообщение об успешном слиянии

Нам нужно сообщить Git, какую удаленную ветку мы хотим объединить.

 git слить происхождение/мэри-функция 

использование git merge для объединения удаленных изменений в локальную ветку

Откроется редактор, чтобы мы могли предоставить сообщение фиксации. Мы можем принять предложенное сообщение или добавить свое. Редактор является вашим редактором по умолчанию, если Git не настроен на использование другого редактора.

Редактирование сообщения коммита

Сохраните изменения, когда будете готовы продолжить. Слияние происходит автоматически при закрытии редактора.

Наше слияние прошло успешно, потому что не было конфликтов.

Сообщение об успешном слиянии

Конфликты возникают, когда одни и те же строки кода изменяются двумя или более разработчиками. Если это так, Git помечает конфликты в затронутом файле. Вам нужно будет просмотреть их по очереди и выбрать, какое изменение оставить.

Недоученный щенок

Точно так же, как дрессированный щенок, fetch то, что вы просите, но не уронит его. Если вы действительно хотите то, что показал вам щенок, вам нужно pull .

СВЯЗАННЫЕ: Git rebase: все, что вам нужно знать