Как я могу проверить конкретную версию одного файла в Git?

Как я могу проверить конкретную версию одного файла в git?

Я нашел эту почту в списке рассылки, в котором говорилось:

$ git checkout HEAD~43 Makefile
$ git reset Makefile

Но я не понимаю, как узнать "HEAD ~ 43", если я сделаю git log aFile, как я могу узнать, какой "HEAD-43" я должен использовать?

И зачем мне нужно запускать git reset для этого файла? Что он делает?

Ответ 1

Вы знаете, что зафиксировать (то есть: конкретную ревизию), к которой принадлежит файл? Затем выполните:

git checkout <commit> <file>

Другая команда:

git checkout HEAD~N <file>

Идет, когда вы хотите получить версию файла из диапазона назад (что я делаю для ностальгии).

Ответ 2

HEAD~43 является просто деревенским, поэтому вы можете использовать хэш или тег. Вам нужно отделить дерево от имени файла с помощью --, иначе оно будет считаться именем файла. Например.

git checkout v0.45 -- filename
git checkout HEAD^ -- filename
git checkout 16bb1a4eeaa9 -- filename

Ответ 3

HEAD~43 относится к фиксации (версии) файла. Вместо этого вы можете использовать хеш-код фиксации, который вы получаете от выполнения git log в файле. Если вам нужен только файл, вам не нужно запускать git reset; что необходимо только в том случае, если вы хотите переслать файл в текущую HEAD.