Вы можете получить указанную версию файла без проверки соответствующего коммита, используя git show
. Например:
git show git_hash:./file.py
напечатает содержимое file.py
с указанной фиксации для стандартного вывода. (Предположительно, интерфейс Git Python, который я не использовал, обеспечивает аналогичную функциональность.) В некоторых случаях ведущий ./
избегает проблем с разрешением пути (я не помню деталей).
Я написал Perl скрипт, который выполняет подобные действия для нескольких разных систем контроля версий (большинство из которых я больше не использую): https://github.com/Keith-S-Thompson/get-versions (без гарантий).
По запросу, вот пример запуска get-versions
для копии собственного репо:
$ ls -l
total 56
-rw-r--r-- 1 kst kst 18092 Aug 9 2015 COPYING
-rw-r--r-- 1 kst kst 6234 Apr 16 2018 README.md
-rw-r--r-- 1 kst kst 940 Apr 25 2018 TODO.md
-rwxr-xr-x 1 kst kst 20977 Apr 16 2018 get-versions
$ get-versions -pad 3 -last 3 get-versions
$ ls -l
total 128
-rw-r--r-- 1 kst kst 18092 Aug 9 2015 COPYING
-rw-r--r-- 1 kst kst 6234 Apr 16 2018 README.md
-rw-r--r-- 1 kst kst 940 Apr 25 2018 TODO.md
-rwxr-xr-x 1 kst kst 20977 Apr 16 2018 get-versions
-r--r--r-- 1 kst kst 20752 Mar 2 10:54 get-versions,012
-r--r--r-- 1 kst kst 20766 Mar 2 10:54 get-versions,013
-r--r--r-- 1 kst kst 20977 Mar 2 10:54 get-versions,014
$
get-versions -help
печатает слишком подробное сообщение об использовании. (Добавление man-страницы в мой список TODO, как и сохранение прав на выполнение.)