4

Шпаргалка по git patches

Пост может дополняться и изменяться🙂

Патч - это текстовый файл, который содержит код и (необязательно) метаданные коммита. Патчи используются в некоторых проектах, например, в Linux Kernel и самом Git. Или в командах, которые работают над форками одного и того же open source продукта, но имеют изолированные репозитории.

Создание патча

Создать патч с не закомиченными изменениями:
git diff > <name>.patch

Создать патч только с проиндексированными, но не закомиченными изменениями:
git diff --cached > 0001_fix.patch

Создать патч для последнего коммита:
git format-patch -1

Создать патчи для всех коммитов, сделанных после последних N коммитов:
git format-patch HEAD~<число>

Создание патча для изменений между двумя коммитами:
git diff <commit1> <commit2> > 0001_commit_diff.patch


Применение патча

Применить патч и не создавать коммиты:
git apply 0001-fix.patch

Применить патч и создать коммиты. Работает, если патчи были созданы с помощью git format-patch:
git am 0001-fix.patch

Применить все патчи сразу можно только с помощью git am. Патчи должны быть пронумерованы в порядке применения и должны храниться в одной директории:
git am *.patch


Конфликты при наложении патчей

В случае использования git apply конфликты разрешаются вручную, процесс также продолжается вручную.
В случае использования git am конфликты разрешаются вручную. После исправления конфликтов процесс можно продолжить:
git am --continue

или прервать:
git am --abort

Технические посты тут t.me/neverending_cpp

Лига программистов

2K постов11.8K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества