Aby stworzyć plik ze zrzutem różnicy pomiędzy ostatnim commitem a stanem plików:
git diff XXX > a.patch
gdzie XXX może być:
- brak – pliki poza stage area, ale dodane do gita (zmiany w roboczym drzewie)
- –cached – pliki ze stage area (zmiany pomiędzy indeksem a ostatnim commitem)
- HEAD – oba rodzaje (zmiany pomiędzy roboczym drzewem a ostatnim commitem)
Żadna opcja nie uwzględnia plików nie dodanych do git (nowoutworzonych).
Aby zaaplikować patch
git apply a.patch
Ostrzeżenie
warning: jakis-plik.ts has type 100644, expected 100755
można zignorować, informuje tylko, że ten plik niespodziewanie ma atrybut „wykonywalny”.
Natomiast komendy z rodziny
git format-patch ...
zawierają modyfikacje zawarte w commitach, tu więcej.
Czyli aby uzyskać kompletną różnicę pomiędzy dwoma branchami (bieżący i master)
git format-patch master --stdout > plik.patch
Stash
Aby porównać zawartość schowka z aktualnymi plikami (warto zmiany od razu wrzucić do jakiegoś pliku)
git stash show -p > stash.diff