Где найти изменения из-за `git fetch`

Я не хотел терять некоторую информацию после git pull, поэтому сделал git fetch раньше. Где я могу прочитать новые модификации после git fetch? Я пошел к файлу FETCH_HEAD, но там не было ничего, кроме большого числа.


person epsilones    schedule 21.05.2012    source источник
comment
У вас есть доступ к gitk? Если вы это сделаете, запустите gitk --all, чтобы просмотреть текущее состояние всех ваших веток на локальном компьютере, даже тех ветвей, которые были обновлены при выборке.   -  person creemama    schedule 21.05.2012
comment
попробуйте git show object, где объект - это большое хешированное число ...   -  person Prince John Wesley    schedule 21.05.2012
comment
Команда gitk работает, но не gitk all. (Кстати, я не уточнил, что удаленный репозиторий не был изменен мной). В окне gitk нет файла, который указывает на извлеченные данные   -  person epsilones    schedule 21.05.2012
comment
Спасибо, команда git show сработала нормально !! Бест, Ньюбен   -  person epsilones    schedule 21.05.2012


Ответы (3)


git fetch origin по умолчанию извлекает все с пульта с именем "origin" и обновляет (или создает) так называемые "ветки удаленного отслеживания" для этого пульта. Скажем, для удаленного устройства с именем «origin», которое содержит ветки с именами «master» и «feature», запуск git fetch remote приведет к обновлению (или созданию, если их не существует). Вы можете увидеть их в выводе git branch -a (обратите внимание на «-a»).

Теперь обычная настройка Git такова, что (некоторые) ваши локальные ветки следуют за определенными удаленными ветвями (обычно с одинаковыми именами). То есть ваша локальная ветвь master следует за origin / master и т. Д.

Итак, после того, как вы загрузили, чтобы увидеть, что удаленный «мастер» по сравнению с вашим локальным «мастером», вы просите Git показать вам именно это:

git log origin/master ^master

что означает все коммиты, доступные от "origin / master", которые не включают коммиты, достижимые от "master" или, альтернативно

git log master..origin/master

что имеет то же значение. Дополнительную информацию см. На странице "gitrevisions", особенно в части "Указание диапазонов". Также см. Примеры на странице руководства git-log.

Вы можете настроить вывод git log по своему усмотрению, поскольку он поддерживает множество параметров, влияющих на него.

Обратите внимание, что в вашей локальной ветке также могут быть коммиты, которых соответствующая удаленная ветка не содержит (пока). Чтобы получить их обзор, вы должны отменить изменения, переданные в git log по (надеюсь) очевидным причинам.

Как обычно, важно обучать самостоятельно, чтобы понять основные концепции, прежде чем начать использовать инструмент. Пожалуйста, сделай.

person kostix    schedule 21.05.2012
comment
По какой причине git diff master origin/master не был упомянут? Кажется, очень просто ответить на вопрос ОП ...? (Я новичок в Git и учусь, поэтому, пожалуйста, поправьте меня, если ошибаюсь.) - person Howiecamp; 09.08.2016
comment
@Howiecamp: дает разные результаты, если вы добавили коммиты в свой master, которые вы не получили от их master (ваш теперь обновленный origin/master). Это не неправильный поступок, но он не покажет вам, какие у них есть коммиты, которых у вас нет (есть на вашем master), а git log подойдет именно это. - person torek; 16.06.2018

Пытаться

git log --oneline --decorate origin/master

Это даст вам журнал изменений из master заголовка origin пульта дистанционного управления (при необходимости вы можете заменить любую другую удаленную ветку). Вы получите примерно такой результат:

234121 (origin/master) Commit message 5
872373 Commit message 4
623748 Commit message 3
235090 (master) Commit message 2
192399 Commit message 1

Фиксация, помеченная как (master), является главой вашего локального master филиала. Фиксация, помеченная как (origin/master), является головной частью удаленной master ветки.

person Barend    schedule 21.05.2012
comment
Думаю, лучшая команда - git log --all --oneline --graph - person andrejs82; 11.12.2018
comment
Это показывает больше коммитов, чем только те, которые были сделаны после того, как я в прошлый раз слил мою текущую локальную голову. Были ли изменения в работе git log? - person Bernhard Döbler; 12.02.2021

Если вы просто хотите посмотреть, какие файлы будут изменены, если вы выполните GIT PULL, сделайте следующее:

git fetch && git diff HEAD @{u} --name-only

Если вы хотите увидеть ВСЕ различия между вашей текущей версией и входящей версией, включая незафиксированные локальные изменения, введите следующее:

git fetch && git diff @{u} --name-only
person Eliezer Berlin    schedule 07.08.2018
comment
У меня был тот же вопрос, и я нашел здесь ответ: stackoverflow.com/questions/19474577/. Вкратце: It is a shortcut to refer to the upstream branch which the current branch is tracking - person Lunfel; 19.04.2020