Как установить git diff -binary патчи без git?
Я использую git diff для создания патчей, которые могут быть применены к удаленному серверу для обновления проекта.
Локально я запускаю:
git diff --no-prefix HEAD~1 HEAD > example.patch
Загрузите example.patch на удаленный сервер и запустите:
patch --dry-run -p0 < example.patch
Если сухая работа выполнена успешно, я запускаю:
patch -p0 < example.patch
Это хорошо работает, за исключением случаев, когда diff включает двоичные файлы. Сегодня я обнаружил, что могу использовать:
git diff --no-prefix --binary HEAD~1 HEAD > example.patch
Проблема заключается в том, что сгенерированный файл патча не может быть применен с использованием патча.
Как я могу применить эти двоичные файлы патчей, не установив git сервер?
Я хотел бы поддерживать способность использовать сухой ход.
Спасибо
Ответы
Ответ 1
Для странного ответа, что вы можете сделать, это использовать sshfs, чтобы смонтировать удаленную систему там, где у вас есть git, а затем выполните ваши команды таким образом. Подходите к проблеме из другой системы координат: вместо того, чтобы задаваться вопросом, как запускать команды там, где нет инструмента, почему бы не создать среду, в которой данные поступают на ваш инструмент (через sshfs?)
Ответ 2
Во многих ситуациях и в этом случае вы не можете создавать данные с помощью более продвинутого инструмента и использовать его с менее продвинутыми. Это счастливое совпадение, что patch
работает для не двоичных git -diffs. git diff
вводит расширение стандартного diff.
Чтобы достичь цели, вы можете:
- установите git в систему назначения (что на самом деле лучший подход)
- установить систему назначения на локальную, как говорит chiggsy
- только
scp
/rsync
новые файлы. Неплохо для маленьких.
Ответ 3
Согласно журнал изменений, мы можем ожидать версии патчей > 2.6.1 для поддержки GIT двоичных различий.
Ответ 4
Используйте этот
git apply example.patch
git add --patch
git commit
Вы можете опустить флаг -patch, но вы не увидите никаких изменений и проверьте процесс исправления.