Почему git fetch не обновляет локальную ветку?

У меня такой сценарий:

Моя удаленная ветка равна моей локальной ветке. Затем я внес некоторые изменения в удаленную ветку и другие изменения в локальную ветку.

Моя идея - запустить git fetch, синхронизировать мою локальную ветку, затем проверить различия, а затем отправить все, но это просто не работает! (git fetch, похоже, не получает изменений, сделанных ранее в удаленной ветке) Я знаю, что запуск git pull "исправляет" это, или git push -f, но я хочу просмотреть изменения перед фиксацией.

Почему git fetch не работает должным образом? Или как я могу иначе просмотреть различия перед фиксацией?


person bakeiro    schedule 06.12.2017    source источник
comment
@SurajRao ну, мой вопрос был больше о том, почему в этом сценарии не работал так, как ожидалось, больше, чем о различиях между этими двумя командами   -  person bakeiro    schedule 06.12.2017
comment
Что ж, я не согласен с тем, что это дублирование этого вопроса, потому что это не то, что на самом деле было задано, но это правда, что если вы действительно понимаете разницу между pull и fetch, тогда ваше ожидание будет другим, и вы не подумаете, что выборка не сработала так, как ожидалось.   -  person Mark Adelsberger    schedule 06.12.2017
comment
git fetch не получает изменений (и на самом деле ветви не хранят изменения). git fetch получает коммит (и каждое имя ветки или любое другое имя в Git просто указывает на одну конкретную фиксацию).   -  person torek    schedule 06.12.2017


Ответы (2)


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

Если вы хотите выполнить слияние удаленной ветки с локальной веткой без немедленной фиксации, чтобы вы могли просмотреть результат, вы можете использовать git pull --no-commit (как описано на git-scm.com). Параметр --no-commit предотвращает автоматическую фиксацию слияния Git, которое может быть частью извлечения, что позволит вам просмотреть результат слияния перед его фиксацией.

person SharpKnight    schedule 06.12.2017

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

git pull - это комбинация git fetch и git merge - поэтому кажется, что git pull "исправляет" такое поведение.

person Edmund Dipple    schedule 06.12.2017