Jak zastosować łatkę` git diff` bez zainstalowanego Git?

Jak mój klient może zastosować patch stworzony przez git diff bez zainstalowanego git? Próbowałem użyć komendy patch, ale zawsze pyta o nazwę pliku do łatania.

 264
Author: Ryan, 2010-08-05

5 answers

git diff > patchfile

I

patch -p1 < patchfile

Działa, ale jak wiele osób zauważyło w komentarzach i innych odpowiedziach patch nie rozumie dodaje, usuwa i zmienia nazwy. Nie ma opcji, ale git apply patchfile jeśli potrzebujesz plik obsługi dodaje, usuwa i zmienia nazwy.


Edycja Grudzień 2015

Najnowsze wersje patch command (2.7, wydany we wrześniu 2012) obsługują większość funkcji formatu" diff --git", w tym zmiany nazw i kopii, zmiany uprawnień i dyfuzory dowiązań symbolicznych (ale nie jednak binarne diffs) ( release announcement ).

Tak więc pod warunkiem użycia bieżącej / najnowszej wersji patch nie ma potrzeby używania git aby móc zastosować jego diff jako łatkę.

 401
Author: Andrey Kuznetsov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-09 16:17:19

Spróbuj tego:

patch -p1 < patchfile
 72
Author: suppie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 12:59:29

Użyj

git apply patchfile
Jeśli to możliwe.
patch -p1 < patchfile 

Ma potencjalne skutki uboczne.

git apply obsługuje również dodawanie, usuwanie i zmianę nazw plików, jeśli są one opisane w formacie git diff, co patch nie wystarczy. Wreszcie, git apply jest modelem "zastosuj wszystko lub przerwij wszystko", w którym albo wszystko jest zastosowane, albo nic nie jest, podczas gdy patch może częściowo zastosować pliki poprawek, pozostawiając Twój katalog roboczy w dziwnym stanie.

 49
Author: Sola Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-01 08:12:57

Używam

patch -p1 --merge < patchfile

W ten sposób konflikty mogą być rozwiązywane jak zwykle.

 6
Author: denis.peplin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-12 05:05:39

Spróbuj tego:

$ git apply file.diff
 -11
Author: Shashi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-12 01:09:56