1

git リポジトリ内の 2 つのファイルを比較し、どちらが以前にリポジトリに導入されたかを確認したいと考えています (タイムスタンプではなく祖先によって)。これを行う単純な方法は、ファイルを導入した個々のコミットを見つけ ( rev-list HEAD -- <filename> | tail -n 1)、それらの間にコミットがあるかどうかを照会することです ( rev-list commit1 ^commit2)。ただし、これは遅くてばかげています。1 つのファイルを含み、もう 1 つのファイルを含まないツリーが見つかるまで、履歴を 2 分割するのはどうでしょうか。

4

3 に答える 3

1

同じ線形ブランチに導入されたファイル(つまり、一方が他方の祖先にあるファイル)を除いて、知る方法はありません。リポジトリにファイルAを導入し、私のファイルBを導入するとします。後で私があなたのリポジトリからクローンを作成した場合、どちらが最初に来たかを知る方法はありません。確かに、クロックを同期することはできますが、それはgitの外です。gitの「時間」の唯一の概念は祖先の関係であり、他の概念は比較できません。

于 2013-03-19T20:10:37.953 に答える
0

diff-filter=A を使用

git log --reverse --format=%H --name-status --diff-filter=A -- file1 file2 | grep ^A | cut -f2

ファイルの数に関係なく、1 回のトラバーサルで必要な順序を取得できます。

于 2013-05-26T09:12:21.570 に答える