Где находится "git fetch"?

Так скажем, я работаю над license.txt в моем локальном хранилище, и я изменяю его. Перед тем как зафиксировать, Сьюзан модифицирует и фиксирует это в удаленном хранилище.

Если я сделаю git fetchчто именно происходит с моими обновлениями? Куда идут результаты?

2 ответа

С вашими обновлениями ничего не происходит. git fetchиз-за отсутствия лучшего слова извлекает коммиты из удаленного репозитория и помещает их в локальную копию базы данных объектов. Поскольку вы работаете над своей собственной веткой, между ними нет взаимодействия, пока вы явно не решите иметь какое-то взаимодействие, например, путем перебазирования, выбора вишни и т. Д.

Вы можете получить доступ к извлеченным коммитам, проверив их соответствующие ветви (например, origin/master).

git fetch не меняет состояние рабочего дерева. На самом деле, это не требует рабочего дерева: git fetch может работать в пустом хранилище (хранилище, у которого нет рабочего дерева).

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

В дополнение к извлечению нового коммита, git fetch также обновит указатели удаленной ветки. Например, предположим, что Сьюзен master Ветвь и твой были идентичны до совершения Сьюзен. После коммита Сьюзен в ее ветке появился новый коммит, которого нет у вас. Когда вы делаете git fetch, ваш местный origin/master указатель ветви обновляется, чтобы указать, что его голова теперь является коммитом Сьюзен. Тем не менее, ваш местный master ветка остается без изменений.

На данный момент вы можете запустить git checkout (без аргументов), и вы получите сообщение, как branch master is behind origin/master by 1 commit and can be fast-forwarded, Это происходит из сравнения master а также origin/master,

Теперь вы можете интегрироваться с изменениями Сьюзен несколькими способами:

  • git rebase: вишня выбирай из тех изменений, которые есть только в твоем местном master на вершине новых изменений в origin/master (тем самым переписывая свою историю), и сделайте результат новым HEAD на местном master). После этого, master строго впереди origin/master: это так же, как origin/masterплюс ваши изменения.
  • git merge: сохраните ваши изменения без изменений и создайте новый коммит master который разрушает их и сливает их. Этот коммит имеет двух родителей: предыдущий коммит на master (в данном случае коммит Сьюзен) и последний коммит в вашей серии локальных коммитов в их первоначальном виде. Снова, master сейчас строго впереди origin/master,
  • git reset --hard origin/master: в знак признательности Сьюзен за то, что вся ваша работа устарела, вы отбрасываете свою работу и просто ускоряете свою работу master к измене Сьюзен. Сейчас master идентично origin/master,

Первые два действия в сочетании с git fetch с использованием git pull команда. git pull выполняет либо git fetch с последующим git merge или он выполняет git fetch в исполнении git rebase, Поведение настраивается для каждой ветви, и есть глобальная опция о том, каким образом следует настраивать вновь созданные ветви. Вы можете изменить поведение, используя git pull --rebase или же git pull --merge,

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

Вам не нужно предпринимать никаких действий сейчас. Благодаря git fetch, вы будете информированы о текущих операциях, без необходимости немедленной интеграции с ними. Вы можете, например, сделать git log origin/master чтобы увидеть, что нового, и как это может повлиять на вашу работу. Но вы можете отложить это и продолжать делать новые коммиты.

Другие вопросы по тегам