ファイルがある場合(テキストデータのみを含む場合)、どの履歴をどのコミットにマップするかをどのように決定できますか?ファイルのバージョンだけを指定してGitコミットを見つける
これは、リポジトリからファイルのサブセットをリッピングしてどこかにダンプしたときに、プロジェクトのバージョンを見つけるのに便利です。
ファイルがある場合(テキストデータのみを含む場合)、どの履歴をどのコミットにマップするかをどのように決定できますか?ファイルのバージョンだけを指定してGitコミットを見つける
これは、リポジトリからファイルのサブセットをリッピングしてどこかにダンプしたときに、プロジェクトのバージョンを見つけるのに便利です。
1)あなたは、入力ファイルに一致するオブジェクトのSHAを発見した、あなたの指定したファイル
2)と()git cat-file
を使用して、各ファイルデフ、)(リポジトリ内のすべてのオブジェクトを通じて.git/objects/*
を反復し、そのファイルのSHAを含むコミットを見つけます。すべてのコミットを繰り返し、git ls-tree | grep
を使用して、オブジェクトを含むコミットを見つけます。
私はここで、単純な、簡単に実行するスクリプトにこのソリューションを固め: `ハッシュ= $(BLOBファイル-t Gitのハッシュオブジェクト)`:あなたはループレスにステップ1を簡素化することができます https://gist.github.com/themattman/20ec6da84304740972e057c22b15c0ee
。 ( '-t blob'は実際にはデフォルトですが、ここでは明示的に使用します)。 – torek