Разницу между GIT Fetch и GIT Pull можно объяснить следующим сценарием:
(Помните, что картинки говорят громче слов! Я предоставил графическое представление)
Давайте рассмотрим пример, когда вы работаете над проектом с членами вашей команды. Таким образом, они будут одной основной ветвью проекта, и все участники должны подключить ее к своему локальному репозиторию, а затем поработать в этой локальной ветке, чтобы изменить / добавить модули, а затем вернуться в основную ветвь.
Итак,
Начальное состояние двух ветвей, когда вы разветвляли основной проект в вашем локальном хранилище, будет таким - (A
, B
и C
- модули, уже завершенные для проекта)
Теперь вы начали работать над новым модулем (предположим, D
), и когда вы завершили модуль D
, вы хотите перенести его в основную ветку, но между тем происходит то, что один из ваших товарищей по команде имеет разработан новый модуль E
, F
и изменен C
.
Итак, теперь произошло то, что в вашем локальном репозитории не хватает первоначального прогресса проекта, и поэтому внесение ваших изменений в основную ветку может привести к конфликту и может привести к неисправности вашего модуля D
.
Чтобы избежать подобных проблем и работать параллельно с первоначальным прогрессом проекта, есть два пути:
1. Git Fetch- Это загрузит все изменения, которые были внесены в проект origin / main ветки, которых нет в вашей локальной ветке. И будет ждать, пока команда Git Merge применит изменения, которые были извлечены для вашего хранилища или филиала.
Итак, теперь вы можете внимательно следить за файлами, прежде чем объединять их с вашим хранилищем. И вы также можете изменить D
при необходимости из-за Modified C
.
2. Git Pull- Это обновит вашу локальную ветку с источником / главной веткой, то есть фактически то, что она делает, это комбинация Git Fetch и Git слияния друг за другом.
Но это может привести к возникновению конфликтов, поэтому рекомендуется использовать Git Pull с чистой копией.