git からエクスポートしたディレクトリがあります。エクスポートされたコードのコミットハッシュを見つけたいです。
私の最初の傾向は次のようなものです:
for each commit in repo:
if diff(commit, export) is empty:
return commit.hash
しかし、実際にこれをどのように行うか、またはより簡単な方法があるかどうかはよくわかりません
使用git archive
した場合は、アーカイブの内容からコミットを回復できます。
git archive は、ツリー ID が指定された場合と、コミット ID またはタグ ID が指定された場合とで動作が異なります。最初のケースでは、現在の時刻がアーカイブ内の各ファイルの変更時刻として使用されます。後者の場合、参照されたコミット オブジェクトに記録されたコミット時刻が代わりに使用されます。さらに、tar 形式が使用されている場合、コミット ID はグローバル拡張 pax ヘッダーに格納されます。git get-tar-commit-id を使用して抽出できます。ZIP ファイルでは、ファイル コメントとして保存されます。
したがって、アーカイブの作成方法に応じて、アーカイブ内のファイルの変更時刻を使用して、その時刻の直前のコミットを見つけるか、コミット ID に直接アクセスできます。
アーカイブがない場合は、ファイル/アーカイブの作成/変更日を確認してください。次に、リポジトリに戻ります。
git log --before=<date> -n 1
関連する日付の前に 1 つのコミットを表示します。