У меня есть файл " main.cpp
", открытый в моем редакторе.
Я хочу увидеть предыдущую версию " main.cpp
" в редакторе тоже.
То, как я делаю это сейчас, похоже на это.
close "main.cpp" in the editor
prompt> mv main.cpp tmp
prompt> git checkout HEAD^ main.cpp
prompt> mv main.cpp old_main.cpp
prompt> mv tmp main.cpp
prompt>
open "main.cpp" and "old_main.cpp" in the editor
Можно ли это упростить, чтобы мне не пришлось закрывать "main.cpp" в редакторе?
То, на что я надеюсь, это вариант, git-checkout
который может это сделать.
ОБНОВЛЕНИЕ: я использую git на Mac OSX 10.5.7
prompt> git --version
git version 1.6.0.4
prompt>
ОБНОВЛЕНИЕ 2: Якуб Наребски ответ:
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
ОБНОВЛЕНИЕ 3: ответ Карми, для конкретной ревизии:
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt>
Ответы:
Вы можете использовать «git show» для этого:
(Обратите внимание, что
:
междуHEAD^
иmain.cpp
. Есть символ двоеточия [ ] .)<revision>:<path>
Синтаксис описан в man - странице git rev-parse , рядом с последним пунктом в разделе «Указание ревизий»:Обратите внимание, что
<path>
здесь указан полный путь относительно верхнего каталога вашего проекта, то есть каталога с.git/
каталогом. (Или, если быть более точным, к « <revision> » (который обычно может быть любым <tree-ish> , то есть чем-то, что представляет дерево))Если вы хотите использовать путь относительно текущего каталога, вам нужно использовать
./<path>
синтаксис (или../path
перейти от текущего каталога).Изменить 2015-01-15: добавлена информация о синтаксисе относительного пути
В большинстве случаев вы можете получить тот же результат, используя
git cat-file
команду низкого уровня (слесарное дело) :источник
Просто добавлю к ответу Якуба: вам даже не нужно перенаправлять вывод в файл с помощью
>
, если вы заинтересованы только в просмотре содержимого файла в терминале. Вы можете просто бежать$ git show 58a3db6:path/to/your/file.txt
.источник