1. ホーム
  2. ギット

[解決済み】git-checkout 古いリビジョンのファイルを新しい名前でチェックアウトする

2022-03-28 01:33:38

質問

私は、ファイル " 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 ということができます。


UPDATE: Mac OSx 10.5.7でgitを使用しています。

prompt> git --version
git version 1.6.0.4
prompt> 


UPDATE2:Jakub Narębskiの回答は。

prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>


UPDATE3です。カルミの回答、具体的な修正点について。

prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt> 

解決方法は?

を使用することができます。 git show を使用します。

git show HEAD^:main.cpp > old_main.cpp

(コロン [ ] があることに注意してください。 : の間にある文字 HEAD^main.cpp .) は <revision>:<path> の構文は git rev-parse のページ、quot;リビジョンの指定" セクションの最後から2番目のポイントです。

<ブロッククオート

<rev>:<path> は、例えば HEAD:README , :README , master:./README

サフィックス : に続けてパスを指定すると、指定したパスにあるブロブまたはツリーをツリー状に指定します。 オブジェクトの名前をコロンの前の部分で指定します。 :path (コロンの前に空の部分がある場合)。 は、次に説明する構文の特殊なケースです:インデックスに記録されているコンテンツが を指定します。で始まるパスは ./ または ../ は、現在の作業ディレクトリからの相対パスです。 与えられたパスは、作業ツリーのルートディレクトリからの相対パスに変換されます。 これは、同じコミットまたはツリーからblobまたはツリーを指定する場合に最も便利です。 は作業ツリーと同じツリー構造である。

なお <path> ここで FULL への相対パスです。 トップディレクトリ を含むディレクトリを指定します。 .git/ ディレクトリを作成します。(正確には、" に。 <revision> を使用することができます。 <tree-ish> つまり木を表現するもの)。

カレントディレクトリからの相対パスを使いたい場合は ./<path> 構文(または ../path はカレントディレクトリから上へ移動します)。

2015-01-15を編集。 相対パス構文に関する情報を追加


ほとんどの場合、低レベル(配管)でも同じ出力を得ることができます。 git cat-file コマンドを使用します。

git cat-file blob HEAD^:main.cpp > old_main.cpp