Как удалить прикладной патч git?

У меня есть git repo, где мы применяем много патчей в тестовой среде.

git apply --stat --check --ignore-whitespace /home/kent/Desktop/patches/test.patch --exclude .gitignore

git am -s --ignore-whitespace /home/kent/Desktop/patches/test.patch --exclude .gitignore --exclude .gitignore

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

Я хотел знать, есть ли способ удалить патч и применить новый.

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

git revert <<commit id>>

Вышеупомянутое не работает для меня всегда.

Ответ 1

TL; DR

Вы можете вернуть патч с помощью:

$ git apply -R <patch>

Вы можете создать патч либо одним из следующих:

Это приведет к созданию патча из diff

$ git diff --patch > 0001-some-modifications.patch

Если вы хотите создать патч только для фиксации HEAD:

$ git show --patch HEAD^ > 0001-some-modifications.patch

Вы можете создать патч для предыдущих 3 коммитов из HEAD:

$ git show --patch HEAD~3 > 0001-some-modifications.patch

Вы можете применить исправление:

$ git apply -- 0001-some-modifications.patch

Вы можете вернуть патч с помощью:

$ git apply -R <patch>

Когда вы создаете патч, это просто отличие от метаданных; файлы, номера строк добавляет/удаляет; что-то следующее:

commit 9dad147cbf16befecdef2e812c1249499bdef5ac
Author: My Name <[email protected]>
Date:   Mon Dec 21 20:46:01 2015 +0000

    Example commit message.

diff --git a/src/example.md b/src/example.md
new file mode 100644
index 0000000..ab73512
--- /dev/null
+++ b/src/example.md
@@ -0,0 +1,3 @@
+# Example document
+
+ Hello World

Поэтому, когда вы используете git apply, вы в основном применяете изменения в соответствии с деревом.

Когда вы запустите git apply -R git, вы просто сделаете противоположное патчу.