~/tools/git/patch-formatter

Git

Git Patch Formatter

Привести произвольный diff к формату git patch.

Как это работает

Нужно передать конкретное изменение коллеге без доступа к репозиторию, приложить патч к issue, или просто сохранить diff в стандартном unified формате для последующего применения через git apply? Git patch formatter online берет старое и новое содержимое файла и генерирует классический patch файл с правильными заголовками.

Результат оформлен в стандартном unified diff формате, который понимает git apply, patch и большинство инструментов code review: заголовки с путями старого и нового файла, строка с диапазонами измененных строк, и сами строки с префиксом минус для удаленных, плюс для добавленных и пробел для неизмененных строк контекста.

Полезно применять при работе без прямого доступа к git репозиторию, например при быстрой правке конфига на удаленном сервере без желания клонировать весь репозиторий, или при документировании конкретного небольшого изменения для code review вне обычного pull request флоу.

Частые вопросы

Можно ли применить сгенерированный патч через git apply?

Да, результат соответствует стандартному unified diff формату, который git apply понимает напрямую, при условии, что путь к файлу в репозитории совпадает с указанным при генерации патча именем файла.

Чем отличается этот формат от того, что генерирует команда git diff?

По сути ничем принципиальным, это тот же unified diff формат, только собранный вручную по двум версиям содержимого файла, а не автоматически через сравнение состояний в git репозитории.

Как правильно указать имя файла для заголовка патча?

Стоит указывать относительный путь от корня репозитория, ровно так, как он выглядел бы в реальном git diff, это обеспечивает корректное применение патча через git apply в правильное место файловой структуры.

Работает ли этот инструмент для бинарных файлов?

Нет, unified diff формат рассчитан на текстовые файлы построчно, для бинарных файлов такой подход не имеет смысла, там используются совсем другие механизмы представления изменений.