Когда я выполняю "получение по запросу мерзавца", я часто хочу знать то, что изменилось между последней версией файла и новой. Скажите, что я хочу знать то, что кто-то еще согласился на конкретный файл.
Как это сделано?
Я предполагаю, что это - "разность мерзавца" с некоторыми параметрами для фиксации x по сравнению с фиксацией y, но я, может казаться, не получаю синтаксис. Я также нахожу "журнал мерзавца", путающий немного, и не уверено, где получить идентификатор фиксации моей последней версии файла по сравнению с новым.
Если вы сделаете прямой 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
Есть много замечательных способов указать коммиты - см. Раздел , указывающий ревизии в man git-rev-parse
, чтобы узнать больше Детали. В этом случае вы, вероятно, захотите:
git diff HEAD@{1}
@ {1}
означает «предыдущую позицию ссылки, которую я указал», так что это соответствует тому, что вы проверяли ранее - непосредственно перед тянуть. Вы можете прикрепить HEAD
к концу там, если у вас также есть некоторые изменения в вашем рабочем дереве, и вы не хотите видеть различия для них.
Я не уверен, что вы просите с «идентификатором фиксации моей последней версии файла» - «идентификатор» фиксации (хэш SHA1) - это 40-символьный шестнадцатеричный код в верхней части каждой записи. в выводе git log. Это хеш для всего коммита, а не для данного файла. На самом деле вам никогда не нужно больше - если вы хотите различать только один файл в пуле, сделайте
git diff HEAD@{1} filename
Это обычная вещь - если вы хотите знать о состоянии файла в данном коммите, вы указываете фиксации и файла, а не идентификатора / хэша, специфичного для файла.