Git: pokaż więcej kontekstu podczas używania git add -i lub git add -e?

101

Selektywnie zatwierdzam części dużego pliku i chciałbym zobaczyć więcej kontekstu wokół każdego fragmentu. czy to możliwe?

Shawn J. Goff
źródło

Odpowiedzi:

130

Krótka odpowiedź: nie.

git diffma -U<n>opcję, która pozwala dostosować liczbę wierszy wyświetlanych wokół zmiany. Na przykład git diff -U5 ...pokaże 5 linii kontekstu. O ile wiem, nie ma takiej opcji dla wyświetlania różnic w trybie interaktywnym.

hammar
źródło
7
Czy jest -U<infinity>opcja pokazania całego pliku? (A może duża liczba jest „wystarczająco dobra”?)
Titaniumdecoy
2
Chciałbym wspomnieć, że liczba w git diff -U<n>jest używana po obu stronach każdej zmienionej linii. Więc jeśli zmienisz jedną linię, git diff -U5pokaże ci 11 linii (zakładając, że jedna linia nie jest na początku lub końcu pliku).
ArtOfWarfare
5
To jest dla git diffnie dla git add --patchlubgit add --interactive
0xcaff
1
@titaniumdecoy, opublikowałem to jako osobne pytanie stackoverflow.com/questions/28727424/ ...
Aleksandr Levchuk
3
Wciąż nie ma rozwiązania?
Witalij Zdanevich
2

Aby potwierdzić, w 2019 nadal nie jest to możliwe.

Takie narzędzie zewnętrzne jjlee/git-meld-indexmoże pomóc:

git-meld-indexbiegnie meld- lub jakikolwiek inny difftool git ( kdiff3, diffuse, itd.) - co pozwala na interaktywne zmian etapu do indeksu git (znany również jako obszar staging git).

Jest to podobne do funkcji git add -pi git add --interactive.

W niektórych przypadkach połączenie jest łatwiejsze / szybsze w użyciu niż git add -pfunkcja przemieszczania w narzędziach takich jak git gui.
Dzieje się tak, ponieważ meld pozwala na przykład:

  • zobacz więcej kontekstu ,
  • zobacz różnice między wierszami
  • edytuj ręcznie i zobacz aktualizacje różnic na żywo (aktualizowane po każdym naciśnięciu klawisza)
  • przejdź do zmiany bez mówienia „ n” do każdej zmiany, którą chcesz pominąć
VonC
źródło