2012-01-21 6 views
0

ハッシュを持っているとしましょう。ccf52ef35d7767c5b0f251542ab79608c50a3a56git commitからファイルまたはフォルダを取得する

gitコマンドラインを使用して、コミットハッシュとファイル構造からファイルの内容を取得するにはどうすればよいですか。

また、パスがファイルではなくディレクトリである場合、どのようにディレクトリリストを取得するのですか。私はチェックする必要はありません、あなたはそれぞれのために使用する2つのコマンドだけです。

私はこれがコマンドであることを知っています: git log [<options>] [<since>..<until>] [[--] <path>...]here is the pageです。

私はgit log ccf52ef35d7767c5b0f251542ab79608c50a3a56を試しましたが、これは一般的なgit log(すべてのコミット)を返しました。私はファイルの内容をどのように取得するのかも分かりませんが、lsまたはcatに配管している点を除きます。

編集:はい、私はgit show --pretty="format:" --name-only a3da8bbを見つけました。ディレクトリとcatのファイルをそこからgrepする最良の方法はありますか?編集2:答えを見た、ありがとう。まだcatファイルを見つける方法を探しています。

+0

は、単一のファイルに対して一意ではありません、それは全体のために複数のファイルで構成することができたコミットユニークです。 –

+0

はい、わかっています。私はすでにディレクトリ構造とファイル名を持っています。 – switz

答えて

4

おそらくたい:

git show --pretty="format:" --name-only <sha1 hash> 

それはファイルがコミットで削除/変更/追加表示されます。代わりに--name-onlyの、あなたは(追加、modifed ...)状況と一緒に名前を表示するよう--name-statusを使用することができます

のファイルの内容を取得するには、使用することができます。

git show <hash>:file 

または

git cat-file -p <hash>:file 
1

私はそれを理解しました。実際にはかなり簡単です。 Aは、ハッシュをコミット

git show hash:path/to/file

関連する問題