Soru Git'te, bir gözden geçirmeden diğerine ayrıntılı bir dosya değişiklikleri listesi nasıl alabilirim?


Sunucuma gönderilen kullanıcı veri dosyalarını sürümüne göndermek için sunucumda bir Git deposu kullanıyorum. Herhangi iki revizyon arasında değişen dosyaların bir listesini almakla ilgileniyorum.

biliyorum git diff --name-only <rev1> <rev2>ama bu sadece bana bir dosya isimleri listesi veriyor. Özellikle de isimler ve kopyalarla ilgileniyorum. İdeal olarak, çıktı böyle bir şey olurdu:

updated:  userData.txt
renamed:  picture.jpg -> background.jpg
copied:   song.mp3 -> song.mp3.bkp

Mümkün mü? --name-status aynı zamanda yeniden isimleri ve kopyaları göstermez.


21
2018-05-19 11:43


Menşei




Cevaplar:


git diff --name-status -C <rev1> <rev2>

Aradığın şeye daha yakın olmalı.

--name-status dosya adlarını ve ilgili durumlarını görüntüler:

(A|C|D|M|R|T|U|X|B)

Eklendi (A), Kopyalanan (C), Silindi (D), Değiştirilmiş (M), Yeniden Adlandırıldı (R),
  türü (ör. düzenli dosya, sembolik link, alt modül,…) değişti (T),
  Sıfırlanmamış (U), Bilinmeyen (X) veya Kopyan (B) eşleştirme

(ki OP Jean Philippe Pellet ekler:

Durum mektupları R ve C “Her zaman, hareketin veya kopyalamanın kaynağı ve hedefi arasındaki benzerlik yüzdesini ifade eden bir skor takip eder ve bunun tek örneği onlardır”.   )

Kopyalanan veya taşınan dosyalarla ilgili olarak:

-C[<n>]
--find-copies[=<n>]

Kopyaları yanı sıra yeniden adlandırın. Eğer n belirtilir, bununla aynı anlama sahiptir -M<n>.

--find-copies-harder

Performans nedenleriyle, varsayılan olarak, -C seçeneği, kopyanın orijinal dosyasının yalnızca aynı değişkenin içinde değiştirilmiş olması durumunda kopyalar bulur.
  Bu bayrak, komutu değiştirilmemiş dosyaları kopya kaynağı için aday olarak inceler.
  Bu büyük projeler için çok pahalı bir işlemdir, bu yüzden dikkatli kullanın. Birden fazla vermek -C seçenek aynı etkiye sahiptir.


brauliobo önerir yorumlarda:

git diff --stat -C
git show --stat -C
git log --stat -C

26
2018-05-19 11:48



Harika, tam da ihtiyacım olan şey bu. Bütünlük uğruna, durum harflerini ekleyeceğim R ve C “Her zaman, hareketin veya kopyanın kaynağı ve hedefi arasındaki benzerlik yüzdesini ifade eden bir puan izler, ve bunun tek olması gerekenler” (kaynak). - Jean-Philippe Pellet
@ Jean-Philippe: iyi bir nokta. Cevaba dahil ettim. - VonC
Teşekkürler! Açık kalan tek kısım, girdileri girdiyle nasıl yorumlamaktır X veya B... - Jean-Philippe Pellet
@ Jean-Philippe: Doğru, umarım sık sık bu tür bir girişi ayrıştırmak zorunda kalmazsınız.) - VonC
Bir takip sorusu sordum Orada hakkında X ve B. - Jean-Philippe Pellet


Bu bilgiyi göstereceğine inanıyorum

git diff -M -C --stat

3
2018-05-19 11:47



Teşekkürler! Benziyor -M gereksiz -C “kopyaların yanı sıra yeniden adlandırır” algılar ve --stat ne zaman etkisi yok gibi görünüyor -C belirtildi. - Jean-Philippe Pellet
çok daha iyi ve aynı zamanda çalışır show ve log. Teşekkürler! - brauliobo