W jaki sposób mój klient może zastosować poprawkę utworzoną przez git diff
bez zainstalowanego git? Próbowałem użyć polecenia patch
, ale zawsze prosi o nazwę pliku do poprawki.Jak zastosować łatkę `git diff` bez zainstalowanego Git?
Odpowiedz
git diff > patchfile
i
patch -p1 < patchfile
praca, ale jak wiele osób zauważyło w komentarzach i innych odpowiedzi plastra nie rozumie dodaje, usuwa i zmienia nazwy. Nie ma innej opcji niż git apply patchfile
, jeśli potrzebujesz obsługi plików, dodaje i usuwa nazwy.
EDIT grudnia 2015
Najnowsze wersje patch
Command (2.7, wydany we wrześniu 2012) wsparcia większość cech formacie "diff", w tym --git zmienia nazwę i kopie, zmiany uprawnień i dowiązania symboliczne różnią się o (ale nie są jeszcze różnicami binarnymi) (release announcement).
Tak więc pod warunkiem, że używa się aktualnej/najnowszej wersji patch
, nie ma potrzeby używania git
, aby móc zastosować jej różnicę jako łatkę.
Lub użyj 'git diff> patchfile', ale' łatka-p1
Jeśli chcesz utworzyć plik łaty ścieżki podrzędnej repozytorium, możesz użyć opcji 'relative' jak:' git diff --no-prefix --relative = my/relative/path> patchfile' –
Czy to nie wymaga instalacji git? Pytanie brzmi: jak to zrobić bez git, prawda? – UpTheCreek
Spróbuj tego:
$ git apply file.diff
Zobacz pytanie: "bez zainstalowanego git" –
Dzięki, to działa również dla użytkowników Windows. – motto
Rewizja, ponieważ OP mówi: "bez zainstalowanego git" – scrapcodes
spróbuj tego:
patch -p1 < patchfile
Korzystając
git apply patchfile
jeśli to możliwe.
patch -p1 < patchfile
ma potencjalny efekt uboczny.
git apply
obsługuje również dodawanie, usuwanie i nazwy plików, jeśli są one opisane w formacie git diff
, których nie będzie można uzyskać pod patch
. Wreszcie, git apply
jest modelem "zastosuj wszystko lub przerwij wszystko", w którym wszystko jest zastosowane lub nic nie jest, podczas gdy łatka może częściowo nakładać pliki łat, pozostawiając twój katalog roboczy w dziwnym stanie.
+1, Jedyna rozsądna odpowiedź. Co więcej, diff/patch nie będzie obsługiwać dowiązań symbolicznych, co stanowi problem, jeśli (na przykład) cofniesz łatkę jądra systemu Linux 3.10. – ignis
Tak, 'git apply' jest najlepszym sposobem, aby to zrobić, ale to pytanie w szczególności pyta, jak zastosować łatkę * bez zainstalowanego Git *. –
Opcje '--dry-run --verbose' są przydatne do określenia efektów ubocznych, jeśli takie istnieją. (używając łatki v2.5.8) – spyle
używam
patch -p1 --merge < patchfile
ten sposób konflikt może być rozwiązany jak zwykle.
- 1. git stworzyć łatkę Diff
- 2. Jak zastosować SVN diff do Git?
- 3. Reading wyjście git diff
- 4. git diff na datę?
- 5. Jak grep the git diff?
- 6. Diff a git fork
- 7. wykluczyć pojedynczy popełnić z "git diff"
- 8. Git diff ze zdalnym znacznikiem
- 9. git diff z połączonej --word-diff
- 10. Jak utworzyć format różnicowy "git diff" (niejednolity, bez kontekstu)?
- 11. Jak wyjść z git log lub git diff?
- 12. git diff wyjątkowy scalić popełnić
- 13. Jak uzyskać różnicę działającą jak git-diff?
- 14. git diff - obsługa długich linii?
- 15. git diff z filtrem autora
- 16. Git diff - jak wyjść z listy porównawczej
- 17. Jak zmienić szerokość zakładki w git diff?
- 18. git diff - pokaż mi zmiany kończące linię?
- 19. ustawienie tabwidth do 4 w git show/git diff
- 20. Jak mogę zastosować tylko część skrytki git?
- 21. git nie można zastosować poprawkę binarny *** bez pełnej linii indeksu
- 22. Jak zrobić git diff --ignore-space-zmienić domyślną
- 23. Git Diff Indent/Pretty Print/Beautify Before Diff
- 24. Zobacz diff inscenizowanych zmian w git
- 25. Dlaczego `git diff` nie wywołuje narzędzia zewnętrznego diff?
- 26. Czy wszystkie polecenia "git diff" mogą korzystać z "Python diff" we wszystkich projektach git?
- 27. Czy możliwe jest ustawienie - default-diff w git diff, git gui, gitk
- 28. Ustaw git diff na wartość domyślną
- 29. Zobacz drzewo diff git w rozsądnym formacie
- 30. git scalania za pomocą narzędzia diff vs2012
Czy ktoś wie, jak to zrobić, jeśli plaster zawiera nazwy? Czy łata obsługuje teraz to teraz? –
Pytanie powinno być następujące: * czy istnieje sposób * na zastosowanie diff git bez zainstalowanego git? [Jak zauważono poniżej] (http://stackoverflow.com/a/17958129/519015), 'patch' nie obsługuje w pełni tego formatu. –