W jaki sposób mój klient może zastosować łatkę utworzoną git diffbez zainstalowanego git? Próbowałem użyć patchpolecenia, ale zawsze prosi o nazwę pliku do załatania.
patchnie w pełni obsługuje ten format.
W jaki sposób mój klient może zastosować łatkę utworzoną git diffbez zainstalowanego git? Próbowałem użyć patchpolecenia, ale zawsze prosi o nazwę pliku do załatania.
patchnie w pełni obsługuje ten format.
Odpowiedzi:
git diff > patchfile
i
patch -p1 < patchfile
działa, ale jak wiele osób zauważyło w komentarzach i innych odpowiedziach łatka nie rozumie dodawania, usuwania i zmiany nazw. Nie ma opcji, ale git apply patchfilejeśli potrzebujesz obsługi dodawania, usuwania i zmiany nazw plików.
EDYCJA grudnia 2015 r
Najnowsze wersje patchpolecenia (2.7, wydane we wrześniu 2012 r.) Obsługują większość funkcji formatu „diff --git”, w tym zmiany nazw i kopii, zmiany uprawnień i różnice dowiązań symbolicznych (ale jeszcze nie binarne) ( ogłoszenie o wydaniu ).
Więc pod warunkiem, że używa się aktualnej / najnowszej wersji, patchnie ma potrzeby używania, gitaby móc zastosować jego różnicę jako łatkę.
git diff > patchfile, alepatch -p1 < patchfile
relativeopcji takiej jak:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfilenie wymaga zainstalowanego git. Pierwsze polecenie demonstruje polecenie do generowania różnic, a nie zastosowania go.
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfilelubgit diff from_branch to_branch > patchfile; ...
Spróbuj tego:
patch -p1 < patchfile
git diffumieści a/i b/przedrostki w danych wyjściowych, więc patch -p1pomija je, aby zastosować plik poprawki.
Posługiwać się
git apply patchfile
Jeśli to możliwe.
patch -p1 < patchfile
ma potencjalny efekt uboczny.
git applyobsługuje także dodawanie, usuwanie i zmianę nazw plików, jeśli są one opisane w git diffformacie, co patchnie jest możliwe. Wreszcie git applyjest modelem „zastosuj wszystko lub przerwij wszystko”, w którym albo wszystko jest zastosowane, albo nic nie ma, podczas gdy łatka może częściowo zastosować pliki łatek, pozostawiając katalog roboczy w dziwnym stanie.
git applyto najlepszy sposób, aby to zrobić, ale to pytanie konkretnie pyta, jak zastosować łatkę bez zainstalowanego Git .
--dry-run --verbosesą przydatne, aby określić, jakie będą skutki uboczne, jeśli takie wystąpią. (przy użyciu poprawki v2.5.8)
git apply patchfile -... jedyna rozsądna odpowiedź ...” - to prawie śmieszne. Za każdym razem, gdy deweloperzy OpenSSL wysyłają mi łatkę do przetestowania, Git nie stosuje jej. To za każdym razem. Jeszcze nie widziałem, żeby to głupie narzędzie nakładało łatkę.
używam
patch -p1 --merge < patchfile
W ten sposób konflikty można rozwiązać jak zwykle.