0

git からエクスポートしたディレクトリがあります。エクスポートされたコードのコミットハッシュを見つけたいです。

私の最初の傾向は次のようなものです:

for each commit in repo:
  if diff(commit, export) is empty:
     return commit.hash

しかし、実際にこれをどのように行うか、またはより簡単な方法があるかどうかはよくわかりません

4

1 に答える 1

0

使用git archiveした場合は、アーカイブの内容からコミットを回復できます。

git archive は、ツリー ID が指定された場合と、コミット ID またはタグ ID が指定された場合とで動作が異なります。最初のケースでは、現在の時刻がアーカイブ内の各ファイルの変更時刻として使用されます。後者の場合、参照されたコミット オブジェクトに記録されたコミット時刻が代わりに使用されます。さらに、tar 形式が使用されている場合、コミット ID はグローバル拡張 pax ヘッダーに格納されます。git get-tar-commit-id を使用して抽出できます。ZIP ファイルでは、ファイル コメントとして保存されます。

したがって、アーカイブの作成方法に応じて、アーカイブ内のファイルの変更時刻を使用して、その時刻の直前のコミットを見つけるか、コミット ID に直接アクセスできます。

アーカイブがない場合は、ファイル/アーカイブの作成/変更日を確認してください。次に、リポジトリに戻ります。

git log --before=<date> -n 1

関連する日付の前に 1 つのコミットを表示します。

于 2013-05-28T14:49:12.503 に答える