мерзавец: Как к разности изменил файлы по сравнению с предыдущими версиями после получения по запросу?

Когда я выполняю "получение по запросу мерзавца", я часто хочу знать то, что изменилось между последней версией файла и новой. Скажите, что я хочу знать то, что кто-то еще согласился на конкретный файл.

Как это сделано?

Я предполагаю, что это - "разность мерзавца" с некоторыми параметрами для фиксации x по сравнению с фиксацией y, но я, может казаться, не получаю синтаксис. Я также нахожу "журнал мерзавца", путающий немного, и не уверено, где получить идентификатор фиксации моей последней версии файла по сравнению с новым.

112
задан sanmai 5 November 2012 в 03:19
поделиться

2 ответа

Если вы сделаете прямой git pull, то вы будете либо "переброшены", либо сольёте неизвестное количество коммитов из удалённого репозитория. Однако это происходит как одно действие, поэтому последний коммит, на котором вы находились непосредственно перед pull, будет последней записью в рефлоге, и к нему можно получить доступ как к HEAD@{1}. Это означает, что вы можете сделать:

git diff HEAD@{1}

Однако, я настоятельно рекомендую, если вы часто так делаете, то вам стоит подумать о том, чтобы просто сделать git fetch и изучить полученную ветку, прежде чем вручную сливать или переделывать на неё. Например, если вы находитесь на master и собираетесь сделать pull in origin/master:

git fetch

git log HEAD..origin/master

 # looks good, lets merge

git merge origin/master
14
ответ дан 24 November 2019 в 02:50
поделиться

Есть много замечательных способов указать коммиты - см. Раздел , указывающий ревизии в man git-rev-parse , чтобы узнать больше Детали. В этом случае вы, вероятно, захотите:

git diff HEAD@{1}

@ {1} означает «предыдущую позицию ссылки, которую я указал», так что это соответствует тому, что вы проверяли ранее - непосредственно перед тянуть. Вы можете прикрепить HEAD к концу там, если у вас также есть некоторые изменения в вашем рабочем дереве, и вы не хотите видеть различия для них.

Я не уверен, что вы просите с «идентификатором фиксации моей последней версии файла» - «идентификатор» фиксации (хэш SHA1) - это 40-символьный шестнадцатеричный код в верхней части каждой записи. в выводе git log. Это хеш для всего коммита, а не для данного файла. На самом деле вам никогда не нужно больше - если вы хотите различать только один файл в пуле, сделайте

git diff HEAD@{1} filename

Это обычная вещь - если вы хотите знать о состоянии файла в данном коммите, вы указываете фиксации и файла, а не идентификатора / хэша, специфичного для файла.

146
ответ дан 24 November 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: