5

ファイルを大幅に変更すると、書き換えがトリガーされることがあります。

yes | head -256 > pa.txt
git add .
git commit -m qu
truncate -s128 pa.txt
yes n | head -64 >> pa.txt
git commit -am ro

結果:

[master 79b5658] ro
 1 file changed, 128 insertions(+), 256 deletions(-)
 rewrite pa.txt (75%)

ただし、これは小さな変更では発生しません。

yes | head -128 > pa.txt
git add .
git commit -m qu
truncate -s64 pa.txt
yes n | head -32 >> pa.txt
git commit -am ro

結果:

[master 88ef937] ro
 1 file changed, 32 insertions(+), 96 deletions(-)

量に関係なく変化率を表示するコマンドを実行できますか? 私はgit diff-treeを調べましたが、変化が劇的な場合にのみ表示されるようです。

4

2 に答える 2

4
git diff -U10000 | awk '
/^i/ {getline; next}
/^-/ {pa += length}
/^ / {qu += length}
END {printf "%.0f%\n", pa/(pa+qu)*100}
'
  1. 完全なコンテキストを強制する-U10000

  2. ---行を除外する

  3. 削除とコンテキスト行でフィルタリングする

  4. それぞれのバイト数を数えます

于 2016-01-13T03:57:23.313 に答える
0

最新のgitで:

> git --version
git version 2.7.0.windows.1

私が使う:

git init dissimilarity
cd dissimilarity
yes aaa | head -128 > pa.txt
git commit -am qu
<remove a few lines>
yes n | head -32 >> pa.txt
git commit -am ro

次に、私にgit diff -B1%/1%与えます:

> git diff -B1%/1% @~|grep diss
dissimilarity index 14%

次に、手動で編集pa.txtし、いくつかの行を削除し、新しい行を追加することで、さらに小さな変更を加えました。

> git diff @~
diff --git a/pa.txt b/pa.txt
index 7f9bf77..bf32d0b 100644
--- a/pa.txt
+++ b/pa.txt
@@ -107,13 +107,7 @@ aaa
 aaa
 aaa
 aaa
-n
-n
-n
-n
-n
-n
-n
+sss
 n
 n
 n

そしてそれでも、私はまだ非類似性指数を見ています:

> git diff -B1%/1% @~|grep diss
dissimilarity index 2%

2%!

于 2016-01-06T13:41:48.053 に答える