2017-01-22 20 views
-1

Gitリポジトリ内の特定のディレクトリに多数のファイルがあります。私はそれらのすべてをさまざまな程度に変更し、追加してから、ファイルをgit mv経由で新しいサブディレクトリに移動しました。私はgit statusを行うときに今、私はこれを参照してください。git mvが削除/追加として表示されたファイルを移動しました

renamed: path/file1.ext -> path/to/file1.ext 
new file: path/to/file2.ext 
deleted: path/file2.ext 

file2.extfile1.extはなぜfile2.extの名前が変更されているものとして表示されないでしたが、それでも...よりも、それに行われたはるかに実質的な変更を持っていましたか?

ほとんどの場合gitに変更しきい値があるようです。ファイルへの変更があるパーセンテージを超えた場合は、名前を変更したファイルとしてカウントせず、古いファイルを削除して新しいファイルを作成します。

答えて

2

これは間違いありません。 Gitは名前の変更を追跡しません。代わりに、ファイルの内容がどのように変化し、ある場所から別の場所に移動するかを調べます。 1つのファイルが消えてその内容が十分に新しい名前で表示された場合、gitは名前を変更して表示します。 (あなたがコミットの歴史を見たときにこれはその場で行われます。)

git diff --helpから:

-M[<n>]
--find-renames[=<n>]

は、名前の変更を検出します。 nが指定された場合、それは類似性指数(すなわち、ファイルのサイズと比較した追加/削除の量)に対する閾値である。たとえば、-M90%は、ファイルの90%以上が変更されていない場合、Gitは削除/追加のペアを名前変更とみなすべきです。 %記号がなければ、数値は小数点以下の小数点として読み取られます。すなわち、-M5は0.5となるので、-M50%と同じです。同様に、-M05-M5%と同じです。正確な名前の変更を検出するには、-M100%を使用します。既定の類似度インデックスは50%です。

関連する問題