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
私が期待しているのは、これが実行できるの変種です。
更新: Mac OSX 10.5.7 で Git を使用しています
prompt> git --version
git version 1.6.0.4
prompt>
更新2: Jakub Narębski の回答は次のとおりです:
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
UPDATE3: 特定の改訂に対するKarmiの回答:
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt>
ベストアンサー1
そのために使用できるものgit show
:
git show HEAD^:main.cpp > old_main.cpp
(と:
の間にコロン[ ]があることに注意してください。)構文はHEAD^
main.cpp
<revision>:<path>
git rev-parseman ページの「リビジョンの指定」セクションの最後のポイントの次に:
<rev>:<path>
例えばHEAD:README
、、:README
master:./README
パスが続くサフィックスは
:
、コロンより前の部分で指定されたツリー状のオブジェクト内の指定されたパスにある BLOB またはツリーに名前を付けます。:path
(コロンより前の部分は空) は、次に説明する構文の特殊なケースです。指定されたパスのインデックスに記録されたコンテンツ。 または で始まるパスは、./
現在../
の作業ディレクトリに対する相対パスです。指定されたパスは、作業ツリーのルート ディレクトリに対する相対パスに変換されます。これは、作業ツリーと同じツリー構造を持つコミットまたはツリーから BLOB またはツリーをアドレス指定する場合に最も便利です。
ここで、これはプロジェクトの最上位ディレクトリ、つまりディレクトリを含むディレクトリに対する完全な相対パスであることに注意してください。(または、より正確には、「<revision><path>
」に対する相対パスです。これは一般に、任意の<tree-ish>、つまりツリーを表すものになります。).git/
現在のディレクトリからの相対パスを使用する場合は、./<path>
構文 (または../path
現在のディレクトリから上へ移動) を使用する必要があります。
2015-01-15編集:相対パス構文に関する情報を追加しました
git cat-file
ほとんどの場合、低レベル (配管)コマンドを使用して同じ出力を得ることができます。
git cat-file blob HEAD^:main.cpp > old_main.cpp