git diff
Polecenia przyjmuje wartości opcjonalnych dla --stat
:
--stat[=<width>[,<name-width>[,<count>]]]
Generate a diffstat. You can override the default output width for
80-column terminal by --stat=<width>. The width of the filename
part can be controlled by giving another width to it separated by a
comma. By giving a third parameter <count>, you can limit the
output to the first <count> lines, followed by ... if there are
more.
These parameters can also be set individually with
--stat-width=<width>, --stat-name-width=<name-width> and
--stat-count=<count>.
(W przypadku skryptów możesz zechcieć użyć git diff-tree
bezpośrednio, ponieważ jest to bardziej polecenie „hydrauliczne”, chociaż podejrzewam, że i tak będzie dobrze. Zauważ, że potrzebujesz tego samego dodatkowego tekstu, co --stat
podczas używania git diff-tree
. Podstawowa różnica między użyciem git diff
„porcelany „front end i git diff-tree
polecenie hydrauliczne polega na tym, że git diff
wyszukuje skonfigurowane ustawienia pod kątem opcji, takich jak diff.renames
podjęcie decyzji o wykrywaniu zmiany nazwy. Cóż, plus interfejs użytkownika git diff
zrobi to samo, git diff-index
jeśli porównujesz zatwierdzenie z indeksem na przykład. Innymi słowy, git diff
odczytuje konfigurację i automatycznie wywołuje odpowiednią instalację ).
--stat-graph-width=...
przełącznika. Zauważ również, że ustawienie wysokie--stat-graph-width=
i--stat-name-width=
nie wystarczające, musisz również ustawić--stat-width=
wystarczająco duże, aby pokryć oba.diff.statGraphWidth
której możesz użyć do ustawienia--stat-graph-width
wartości, ale inne domyślnie odpowiadają szerokości twojego terminala. (A więc alternatywna odpowiedź: „tak, po prostu zrób okno terminala o szerokości 1000 kolumn” :-))Do przetwarzania skryptów może być lepiej użyć jednego z następujących:
Każdy z nich staje się bardziej przydatny do niezawodnego przetwarzania skryptów w połączeniu z
-z
opcją, która używaNUL
jako terminatorów pól.źródło
git rev-parse --show-toplevel
. Pierwotny problem dotyczył obciętych ścieżek, co jest problemem w różnicach, szczególnie w przypadku długich nazw plików lub niskiej wartości parametru--stat-name-width
. Powyższe polecenia nie spowodują obcięcia ścieżek, ale pokażą „pełną” ścieżkę zgodnie z żądaniem, aczkolwiek nadal w odniesieniu do katalogu głównego repozytorium.W przypadku użytkowników Bash możesz użyć
$COLUMNS
zmiennej, aby automatycznie wypełnić dostępną szerokość terminala:Bardzo długie nazwy ścieżek mogą nadal zostać obcięte; w tym przypadku można zmniejszyć szerokość części +++ / --- używając
--stat-graph-width
, na przykład ogranicza to do 1/5 szerokości terminala:Aby uzyskać bardziej ogólne rozwiązanie, możesz użyć danych wyjściowych programu
tput cols
do określenia szerokości terminala.źródło
--stat=$COLUMNS,$COLUMNS
? Wpisywanie go za każdym razem jest szalone.export COLUMNS
do swojego~/.bashrc
, aw swoim~/.gitconfig
pod[alias]
, dodajsmart-diff = ! "gitsmartdiff() { git diff $2 --stat=$COLUMNS,$COLUMNS; }; gitsmartdiff"
diff
. Chcę, żeby to działało również dla połączeń, ściągnięć itp. (Nie można tego zrobić nawet ręcznie). Nie sądzę, aby GIT to obsługiwał.Jest to opcja
--name-only
:git diff --name-only
. Ta opcja jest również obsługiwana przez inne polecenia git, takie jakshow
istash
.Ta opcja nie skraca ścieżek.
źródło
Utworzyłem następujący alias git:
Odczytuje liczbę kolumn z
tput cols
polecenia. Domyślnie różni się odmaster
, ale możesz opcjonalnie określić inną gałąź.źródło
Prostym rozwiązaniem, które znalazłem, było zrobienie tego: (działa tylko na * nix, przepraszam, brak osx)
Ta wersja działa w obu przypadkach, ale nie wygląda świetnie na OSX.
źródło
Zauważyłem, że zachowanie diff --stat zmieniło się gdzieś w okolicach git 1.7.10, gdzie wcześniej domyślnie skracało ścieżki plików do stałej szerokości - teraz wyświetla tyle, na ile pozwala okno terminala. Jeśli napotykasz ten problem, upewnij się, że dokonałeś aktualizacji do wersji 1.8.0 lub nowszej.
źródło