2012-03-24 13 views
136

Zasadniczo nie chcę widzieć zmienionej zawartości, tylko nazwy plików i numery linii.Czy mogę ustawić różnicę w git tylko wyświetlać zmienione nazwy plików i numery linii?

+0

Jestem ciekawy, czy numery linii są naprawdę użyteczne bez kodu? A może chcesz zmienić liczbę linii? –

+0

cóż, nie jest to szczególnie ważne, ale potrzebuję go, by dodać do zakładek, gdzie zmieniłem kod. – wei

+0

Jednym z zastosowań tego jest połączenie informacji z raportem pokrycia kodu, aby ocenić, czy nowy lub zmodyfikowany kod w zatwierdzeniu jest objęty testami. – AntonyG

Odpowiedz

40

Uwaga: jeśli jesteś po prostu patrząc na nazwiska zmienionych plików (bez numery linii dla wierszy, które zostały zmienione), that's easy, click this link to another answer here.


Nie ma wbudowaną opcją dla tego (i nie sądzę, że to wszystko, co przydatne, albo), ale jest można zrobić to w git, z pomocą „zewnętrznym diff” scenariusz.

Oto bardzo kiepska; od ciebie zależy, jak naprawisz wyjście tak, jak byś tego chciał.

#! /bin/sh 
# 
# run this with: 
# GIT_EXTERNAL_DIFF=<name of script> git diff ... 
# 
case $# in 
1) "unmerged file [email protected], can't show you line numbers"; exit 1;; 
7) ;; 
*) echo "I don't know what to do, help!"; exit 1;; 
esac 

path=$1 
old_file=$2 
old_hex=$3 
old_mode=$4 
new_file=$5 
new_hex=$6 
new_mode=$7 

printf '%s: ' $path 
diff $old_file $new_file | grep -v '^[<>-]' 

Szczegółowe informacje na temat „trudno zewnętrznej” patrz opis GIT_EXTERNAL_DIFF w git manual page (wokół linii 700, całkiem blisko do końca).

+1

Dzięki.Właściwie napisałem podobny skrypt, po potwierdzeniu, że nie ma w tym wbudowanych opcji: :) – wei

+0

Orurowanie do '| grep -o '^ [0-9] *' 'podaje tylko liczby, zakładając, że nie dbasz o prawą stronę. – GKFX

43

Numery linii jak w liczbie zmienionych linii lub rzeczywistych numerów linii zawierających zmiany? Jeśli chcesz liczbę zmienionych linii, użyj git diff --stat. W ten sposób wyświetli się następujący komunikat:

[[email protected]:~/newsite:master]> git diff --stat 
whatever/views/gallery.py | 8 ++++++++ 
1 files changed, 8 insertions(+), 0 deletions(-) 

Nie ma opcji, aby samodzielnie uzyskać numery linii zmian.

+1

Myślałem o rzeczywistych numerach linii. W każdym razie dzięki. – wei

+0

'gitk [nazwa pliku]' – uday

+0

Wątpię, czy chce tego narzędzia graficznego. – ThiefMaster

464

tak proste:

git diff --name-only 

Idźcie i diff!

+1

Tak prosty i taki dobry. – Wok

+38

Jest to możliwa odpowiedź, której szuka większość osób przeglądających tę stronę (była dla mnie). Jednak nie odpowiada na pierwotne pytanie, które w szczególności wspomina numery linii. –

+7

To NIE powinno być zaakceptowaną odpowiedzią, ponieważ rozwiązuje tylko połowę problemu - nadal musisz wypisać, które linie (dla każdego pliku) zostały zmienione. – adamwong246

1

wiem, że to jest stare pytanie, ale na Windows, to filtruje wyjście git do plików i zmienionymi numerami linii:

(git diff -p --stat) | findstr "@@ --git"

diff --git a/dir1/dir2/file.cpp b/dir1/dir2/file.cpp 
@@ -47,6 +47,7 @@ <some function name> 
@@ -97,7 +98,7 @@ <another functon name> 

aby wyodrębnić pliki i zmienione linie z że jest nieco więcej pracy:

for /f "tokens=3,4* delims=-+ " %f in ('^(git diff -p --stat .^) ^| findstr ^"@@ --git^"') do @echo %f

a/dir1/dir2/file.cpp 
47,7 
98,7 
Powiązane problemy