«git fetch» не обновляет историю фиксаций в «git log»

#git #git-commit #git-log #git-fetch

#git #git-commit #git-log #git-fetch

Вопрос:

Я новичок в git workflow и следил за онлайн-руководством по «git fetch». Вот выполненные шаги:

  1. «git pull» для синхронизации файлов и истории из удаленного репозитория
  2. Новая фиксация была выполнена тем же пользователем онлайн
  3. «git remote show origin» показывает, что локальная ветвь «устарела» с удаленным репозиторием
  4. «git fetch» был выполнен для синхронизации метаданных, а не локальных файлов

Для руководства -> После «git fetch», когда «git log» используется для просмотра истории фиксаций, он показывает последнюю выполненную фиксацию и кто это сделал

Для меня -> После «git fetch», когда используется «git log», он не показывает мне последнюю выполненную фиксацию

Я попробовал «git pull», а затем обновилась как история фиксации, так и локальный файл. Я делаю здесь что-то не так (или) «git fetch» не должен обновлять историю журнала

Ответ №1:

Да, вы синхронизировали данные с удаленным, но не изменили свой главный коммит, поэтому, если вы хотите проверить журнал удаленных коммитов, вам следует использовать, git log origin/master где origin — удаленное имя и master — название ветки, которую вы хотите показать.
Если вы хотите изменить свою фиксацию на последнюю с удаленного, вам следует использовать git pull вместо git fetch .

Ответ №2:

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

 # from local
git pull origin local
  

или

 # from local
git fetch origin
git merge origin/local
  

Проблема с выполнением только a git fetch заключается в том, что он обновляет удаленную отслеживающую (локальную) ветку origin/local , но на самом деле ничего не делает с вашей local веткой. Чтобы обновить local последнюю работу, вам нужно git pull (первый вариант), который выполняет слияние с origin/local , или просто выполнить явное слияние с origin/local (второй вариант).

Комментарии:

1. У меня есть небольшое сомнение здесь. Когда вы выполняете «git pull», как упоминалось выше (если remote опережает фиксацию), что происходит с моим локальным отредактированным файлом? Сохраню ли я изменения (или) удаленный файл заменит мой локальный файл?

2. Это зависит. В более ранних версиях Git вы никогда не могли этого сделать, и вы бы получили предупреждение о том, что ваши локальные изменения будут перезаписаны. В более поздних версиях Git иногда вытягивание возможно, иногда нет. Рекомендуется всегда иметь чистый рабочий каталог / этап при выполнении git pull .

3. Я только что узнал, что «локальные изменения никогда не перезаписываются» в случае «git pull». Перезапись происходит только тогда, когда статус git очищен и конфликтов слияния нет. В случаях, когда новые коммиты в онлайн-репозитории (скажем, добавление нового файла (или) изменения файла), которые не конфликтуют с последней фиксацией в локальной, локальные изменения всегда сохраняются, и в случае каких-либо конфликтов это не позволяет нам выполнять «git pull». Спасибо за вашу помощь