59

.texコピーを取得したい、いくつかのコミット前のバージョンのファイルがあります。必要なファイルのバージョンを持つコミットの sha1 ハッシュ値があります。現在のバージョンのファイルを置き換えたくありません。むしろ、古いバージョンでの状態を反映した別のコピーを取得したいだけです。

多くの同様の質問が の使用を提案してgit checkout <sha1> -- file.texいますが、これは「エラー: pathspec 'file.tex' が git で認識されているファイルと一致しませんでした」というメッセージが表示され続けます。

私が興味を持っているファイルは、もともとリポジトリの最上位ディレクトリに存在していました。現在、リポジトリのサブディレクトリにいて、このコマンドを実行して、サブディレクトリにある古いバージョンの file.tex を取得しようとしています。

これは可能ですか?これどうやってするの?

4

3 に答える 3

91

git cat-fileファイルの内容を標準出力にダンプし、それを目的の宛先にリダイレクトするために使用できます。

git cat-file -p <sha1>:./file.tex > wherever.tex

リポジトリの./サブディレクトリにいる場合は必要です。リポジトリのトップレベルにいる場合は省略できます。また、それは古いバージョンの git では機能しない可能性があります。その場合、リポジトリのルートに相対するファイルへのフル パスを明示的に指定する必要があります。

于 2013-02-21T06:56:44.873 に答える
11

最善の解決策は、ファイルを一時的に上書きすることだと思います。リポジトリのトップレベルで:

git checkout <sha1> file.tex
cp file.tex directory
git checkout HEAD file.tex
于 2013-02-21T06:00:06.873 に答える