いくつかのコミットの.tex
ファイルのバージョンがあり、そのコピーを取得したいと思っています。目的のファイルのバージョンを持つコミットのsha1ハッシュ値があります。ファイルの現在のバージョンを置き換えたくありません。むしろ、古いバージョンでの状態を反映する別個のコピーを取得したいだけです。
多くの同様の質問がgit checkout <sha1> -- file.tex
を使用することを示唆していますが、これは単に「error:pathspec 'file.tex'がgitに知られているどのファイルとも一致しませんでした」を与え続けます。
私が興味を持っているファイルは、もともとリポジトリの最上位ディレクトリに存在していました。現在、このコマンドを実行してリポジトリのサブディレクトリに移動し、サブディレクトリで古いバージョンのfile.texを取得しようとしています。
これは可能ですか?これどうやってするの?
git cat-file
を使用して、ファイルの内容を標準出力にダンプし、それを目的の宛先にリダイレクトできます。
git cat-file -p <sha1>:./file.tex > wherever.tex
./
は、リポジトリのサブディレクトリにいる場合に必要です。リポジトリのトップレベルにいる場合は、省略できます。また、古いバージョンのgitでは機能しない場合があります。この場合、リポジトリのルートに相対するファイルへの絶対パスを明示的に指定する必要があります。
最善の解決策は、ファイルを一時的に上書きすることだと思います。リポジトリの最上位で:
git checkout <sha1> file.tex
cp file.tex directory
git checkout file.tex