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?
Odpowiedz
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).
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.
Myślałem o rzeczywistych numerach linii. W każdym razie dzięki. – wei
'gitk [nazwa pliku]' – uday
Wątpię, czy chce tego narzędzia graficznego. – ThiefMaster
tak proste:
git diff --name-only
Idźcie i diff!
Tak prosty i taki dobry. – Wok
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. –
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
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
Jestem ciekawy, czy numery linii są naprawdę użyteczne bez kodu? A może chcesz zmienić liczbę linii? –
cóż, nie jest to szczególnie ważne, ale potrzebuję go, by dodać do zakładek, gdzie zmieniłem kod. – wei
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