Как: Создать Патч С Помощью Команды Diff — Linux

Если вы внесли какие-то изменения в код и теперь хотите поделиться ними с остальными, самый лучший способ — это представить их в виде патча.

diff — это утилита командной строки в Linux, которая используется для создания патчей и которая предполагает что у вас в наличие есть две копии кода: одна копия — с вашими изменениями и вторая — без (оригинал).

В данной статье объясняется как создать патч для отдельно взятого файла или для целой директории с помощью команды diff и как применять этот патч после.

Создать Патч для Одного Файла в Linux

Допустим у вас есть оригинал какого-то файла.

Вы внесли в него какие-то изменения и сохранили результат, как новый файл.

Дельный Совет: Подзабыли значение какого-то термина в Git? Не беда! Просто прочитайте и добавьте в закладки эту статью! Эта статья →

Чтобы создать патч содержащий внесенные вами изменения, выполните следующую команду:

$ diff -u OriginalFile NewFile > PatchFile
Опция Описание
-u Создать diff файл в унифицированном (едином) формате

Применить Патч к Файлу

Человек, у которого есть оригинал файла и который хочет применить сделанные вами изменения, может пропатчить оригинальный файла с помощью следующей команды:

$ patch OriginalFile < PatchFile

Теперь содержимое оригинального файла идентично обновленному.

Отменить Патч

Чтобы откатить внесенные патчем изменения, используйте следующую команду:

$ patch -R OriginalFile < PatchFile
Опция Описание
-R, —reverse Отменить изменения

Создать Патч для Директории в Linux

Предположим у вас есть директория с какими-то файлами и субдиректориями внутри.

Вы рекурсивно скопировали ее содержимое в новую директорию и внесли туда какие-то изменения.

Чтобы создать патч содержащий внесенные вами изменения, выполните следующую команду:

$ diff -ruN OriginalDir NewDir > PatchFile
Опция Описание
-r Применять diff рекурсивно ко всем общим подкаталогам
-u Создать diff файл в унифицированном (едином) формате
-N Считать отсутствующие файлы пустыми

Применить Патч к Директории

Человек, у которого есть оригинальная директории и который хочет применить сделанные вами изменения, должен куда-либо скопировать эту директорию вместе с патчем (например в /tmp), прейти туда и применить патч с помощью следующей команды:

$ patch -p0 < PatchFile
Опция Описание
-p0 Применить патч к той-же структуре каталога, которая была при его создании

Теперь содержимое оригинальной директории идентично содержимому обновленной директории.

Отменить Патч

Дельный Совет: Проблема с кодировкой файла? Узнай как пофиксить! Читать далее →

Чтобы откатить внесенные патчем изменения, используйте следующую команду:

$ patch -R -p0 OriginalFile < PatchFile
Опция Описание
-R, —reverse Отменить изменения