Шпаргалка по 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 подписчиков
Правила сообщества
- Будьте взаимовежливы, аргументируйте критику
- Приветствуются любые посты по тематике программирования
- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества