git - diff bieżących zmian przed zatwierdzeniem

106

Zmieniłem kilka plików w repozytorium git, ale jeszcze ich nie zatwierdziłem.

Mogę uzyskać listę zmian, po prostu wywołując git status. Ale jak oprócz nazw plików uzyskać listę wierszy lub zmienionych treści ?

Początkowo myślałem o użyciu git diff , ale wydaje się, że jest to przydatne tylko do porównywania już zatwierdzonych zmian.

Zwykle po prostu to robię meld ., ale w tym przypadku jestem połączony z zewnętrznym serwerem przez ssh.

kikito
źródło

Odpowiedzi:

153

git diffdomyślnie pokazuje różnicę między katalogiem roboczym a indeksem ( obszar pomostowy dla następnego zatwierdzenia).

Jeśli już dodałeś ( przygotowałeś ) zmiany do obszaru przemieszczania , git diff --stagedwykonuje zadanie. Obszar pomostowy to dane, z których zostanie utworzone następne zatwierdzenie git commit.

PS Dobra lektura (IMO) dla początkujących użytkowników Git:

Mischa Arefiev
źródło
Czy etap nie dotyczy tylko plików, które nie zostały jeszcze dodane? Pomyślałem, że musisz użyć flagi z pamięci podręcznej.
pbond
4
@peterbond man git-diffmówi--staged is a synonym of --cached
Mischa Arefiev
2
@peterbond Technicznie wystawiony oznacza dodany do obszaru przejściowego, który nie jest jeszcze zatwierdzeniem. Wyjaśniłem to w edycji.
Mischa Arefiev
1
@Mischa Dokumentacja mówi, że domyślnym zachowaniem dla git diffjest obliczenie różnicy między katalogiem roboczym a indeksem , a nieHEAD
Axel
Nie przyszło mi do głowy wywołać git diff bez parametrów. Dzięki!
kikito
10

W takich przypadkach używam:

git diff HEAD *

To pokaże zmiany od ostatniego zatwierdzenia. Chociaż w jakiś sposób działa szybciej z

git diff .

lub

git diff

Aby zobaczyć zmiany we wcześniej git addedytowanych plikach, użyj stagedflagi:

git diff --staged
EliuX
źródło