Как мой клиент может использовать патч, созданный git diff
без установки git? Я попытался использовать команду patch
, но всегда запрашивает имя файла для исправления.Как применить патч `git diff` без Git?
ответ
git diff > patchfile
и
patch -p1 < patchfile
работа, но, как многие заметили, в комментариях и других ответов патч не понимает, добавляет, удаляет и переименовывает. Нет опции, кроме git apply patchfile
, если вам нужен файл дескриптора, который добавляет, удаляет и переименовывает.
EDIT декабря 2015
Последние версии patch
команды (2.7, выпущенные в сентябре 2012 года) поддерживает большинство функций формата "дифф --git", в том числе переименований и копий, изменения прав доступа , и symlink diffs (но еще не бинарные различия) (release announcement).
При условии, что используется текущая/последняя версия patch
, нет необходимости использовать git
, чтобы иметь возможность применять ее diff как патч.
Или используйте 'git diff> patchfile', но' patch -p1
Если вы хотите создать файл паттерна подпути репозитория, вы можете использовать опцию 'relative', например:' git diff --no-prefix --relative = my/relative/path> patchfile' –
Разве это не требует установки git? Вопрос в том, как это сделать без git? – UpTheCreek
Попробуйте это:
$ git apply file.diff
См. Вопрос: «без git installed» –
Спасибо, это работает и для пользователей Windows. – motto
Downvoted, так как OP говорит: «без git установлен» – scrapcodes
попробовать это:
patch -p1 < patchfile
Использование
git apply patchfile
, если это возможно.
patch -p1 < patchfile
имеет потенциальный побочный эффект.
также обрабатывает файл, который добавляет, удаляет и переименовывает, если они описаны в формате git diff
, который patch
не будет выполнять. Наконец, git apply
- это модель «применить все или прервать все», где либо применяется, либо ничего, а патч может частично применять файлы исправлений, оставляя ваш рабочий каталог в странном состоянии.
+1, Единственный разумный ответ. Кроме того, diff/patch не будет обрабатывать символические ссылки, что является проблемой, если (например) вы возвращаете исправление ядра ядра 3.10. – ignis
Да, 'git apply '- лучший способ сделать это, но этот вопрос задает вопрос, как применять патч * без установки Git *. –
Опции '--dry-run --verbose' полезны для определения того, какие будут побочные эффекты, если они есть. (используя patch v2.5.8) – spyle
Я использую
patch -p1 --merge < patchfile
Таким образом, конфликты могут быть разрешены как обычно.
- 1. Как применить программный патч git?
- 2. Как применить git diff -binary патчи без git?
- 3. git применить патч и игнорировать историю?
- 4. Как применить патч git на незавершённой ветке?
- 5. Как применить очень старый патч в Git?
- 6. Git diff без комментариев
- 7. Как применить SVN diff к Git?
- 8. Как выполнить патч Git?
- 9. Применить локальный патч к новой версии GIT
- 10. Git применить патч к рабочему каталогу
- 11. git status и git diff empty after failed git am
- 12. Git diff patch без/a/b?
- 13. git log -L без diff
- 14. Как создать патч без фиксации в Git
- 15. Разница между git diff (git patch) и git push
- 16. Создайте патч или файл diff из git-репозитория и примените его к другому репозиторию git
- 17. Git: умение ставить патч
- 18. Вернуть один патч git rebase
- 19. Может ли git использовать патч/diff на основе хранения?
- 20. Git diff создает пустой патч при использовании внешнего diffftool
- 21. Git патч пуст совершает
- 22. Как применить файл исправления в git
- 23. Как git-diff генерирует описания hunk?
- 24. Как применить патч, созданный с помощью git format-patch?
- 25. Как создать патч с помощью git и применить его также
- 26. Как я могу применить патч к объединению поддерева git?
- 27. Как заставить diff работать как git-diff?
- 28. Git diff with textutil
- 29. git see all merge diff
- 30. Git diff without clone
Кто-нибудь знает, как это сделать, если патч включает переименование? В настоящее время поддерживается ли исправление? –
Вопрос должен быть действительно: * есть ли способ * применить git diff без установки git? [Как указано ниже] (http://stackoverflow.com/a/17958129/519015), 'patch' не полностью поддерживает этот формат. –