#git #git-commit #git-log #git-fetch
#git #git-commit #git-log #git-fetch
Вопрос:
Я новичок в git workflow и следил за онлайн-руководством по «git fetch». Вот выполненные шаги:
- «git pull» для синхронизации файлов и истории из удаленного репозитория
- Новая фиксация была выполнена тем же пользователем онлайн
- «git remote show origin» показывает, что локальная ветвь «устарела» с удаленным репозиторием
- «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». Спасибо за вашу помощь