2017-06-02 8 views
0

私はgitリポジトリ(MyRepoと呼ぶ)、gitリポジトリのローカル作業クローン、および他のいくつかのマシンからのメインgitリポジトリのサブディレクトリのコピーを持っています(SomeSubDirectoryと呼ぶ)。gitがディレクトリをコミットするのはどれですか?

私のgitリポジトリには少しの履歴(約500件のコミット)がありますが、いくつかのブランチもあります。

残念ながら、最初にSomeSubDirectoryを別の場所にコピーしたとき、どのgitがハッシュしたかをメモするのを忘れました!このコピーSomeSubDirectoryのgitがどのgitコミットをコミットしているかはどのようにして分かりますか?

+1

*すべて*そのディレクトリからファイル、および変更されていないが、作ってみますgitリポジトリを作成し、すべてのファイルをコミットし、ツリーオブジェクトのハッシュをチェックし、そのハッシュがソースリポジトリに存在するかどうかを確認します。 –

+0

@ LasseV.Karlsen 'SomeSubDirectory'は、リポジトリ内のいくつかのコミットですべてのファイルとともに、正確に存在します。残念ながら、それはリポジトリ内の唯一のディレクトリではないので、コミットハッシュは異なるでしょうか? さらに、 'SomeSubDirectory'はしばらくの間続き、時間の経過とともに大きく変化していますので、' SomeSubDirectory'を正確に見つけることができます。 – starbeamrainbowlabs

+0

コミットハッシュ、はい、ただしツリーハッシュはありません。木のハッシュは、あなたがコミットしたときやあなたが誰としてコミットするのか、またこのコミットのために親が存在したのかではなく、どのファイルが存在し、そのハッシュに基づいて計算されます。 –

答えて

0

あなたはgit logを使用することができ、およびディレクトリパスを指定することによって、そのサブディレクトリのみに関するコミットを除外します:

git log --oneline SomeSubDirectory 

注:私は単純に出力のための--onelineを使用しました、好きなフォーマットを使うことができます。

これは、最後にコミットのリストが戻ってきます。コミットのリストは、一番上のものから一番下に、最初のコミットになります。さて、簡単にするために、あなたはパイプがtailにこれをできたし、最後の行を取得 - つまり最初のコミット:ファイルがある場合は

git log --oneline SomeSubDirectory | tail -n 1 
+0

答えをありがとう!残念ながら、私は 'SomeSubDirectory'がバージョン管理の外にあるコピーと同じである' SomeSubDirectory'のバージョンを持っている特定のコミットの後で、 'SomeSubDirectory'はむしろ多くの歴史を持っているので、それが変更されたコミットのリストではありません自分の。 – starbeamrainbowlabs

+0

今すぐ入手します。 – matov

関連する問題