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.
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ę.
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
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.
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.
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
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