Spec-Zone.ru › Git

git-revert

Имя

git-revert - Отменить некоторые существующие коммиты

Синтаксис

git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>…​
git revert (--continue | --skip | --abort | --quit)

Описание

При задании одного или нескольких существующих коммитов, отменить изменения, которые вносят связанные патчи, и записать некоторые новые коммиты, которые их фиксируют. Это требует, чтобы ваша рабочая директория была чистой (без изменений от коммита HEAD).

Примечание: git revert используется для записи некоторых новых коммитов, чтобы обратить вспять эффект некоторых более ранних коммитов (часто только одного неисправного). Если вы хотите удалить все незафиксированные изменения в вашей рабочей директории, вы должны обратиться к git-reset[1], особенно к опции --hard. Если вы хотите извлечь определённые файлы так, как они были в другом коммите, вы должны обратиться к git-restore[1], конкретно к опции --source. Будьте осторожны при использовании этих альтернатив, так как обе они отбросят незафиксированные изменения в вашей рабочей директории.

См. «Сброс, восстановление и отмена» в git[1] для различий между тремя командами.

Опции

<commit>…​

Коммиты для отмены. Для более полного списка способов написания имён коммитов, см. gitrevisions[7]. Также можно указывать наборы коммитов, но по умолчанию никакого обхода не происходит, см. git-rev-list[1] и его опцию --no-walk.

-e
--edit

С этой опцией, git revert позволит вам отредактировать сообщение коммита перед сохранением отмены. Это значение по умолчанию, если вы запускаете команду из терминала.

-m parent-number
--mainline parent-number

Обычно вы не можете отменить слияние, потому что вы не знаете, какая сторона слияния должна рассматриваться как основная. Эта опция указывает номер родителя (начиная с 1) основной ветки и позволяет отмене обратить вспять изменение относительно указанного родителя.

Отмена коммита слияния означает, что вы никогда не захотите изменений дерева, внесённых слиянием. В результате последующие слияния будут вносить только изменения в дерево, внесённые коммитами, которые не являются предками ранее отменённого слияния. Это может или не может быть тем, что вы хотите.

См. инструкцию по отмене неисправного слияния для получения более подробной информации.

--no-edit

С этой опцией, git revert не будет запускать редактор сообщения коммита.

--cleanup=<mode>

Эта опция определяет, как будет очищено сообщение коммита перед передачей в механизм коммитов. См. git-commit[1] для получения более подробной информации. В частности, если <mode> получит значение scissors, к MERGE_MSG будет добавлен символ ножниц перед передачей в случае конфликта.

-n
--no-commit

Обычно команда автоматически создаёт некоторые коммиты с сообщениями коммитов, указывающими, какие коммиты были отменены. Этот флаг применяет необходимые изменения для отмены указанных коммитов в вашей рабочей директории и индексе, но не создаёт коммиты. Кроме того, когда эта опция используется, ваш индекс не должен совпадать с коммитом HEAD. Отмена выполняется по отношению к начальному состоянию вашего индекса.

Это полезно при отмене эффектов нескольких коммитов в вашем индексе подряд.

-S[<keyid>]
--gpg-sign[=<keyid>]
--no-gpg-sign

Подписывает коммиты с помощью GPG. Аргумент keyid является необязательным и по умолчанию совпадает с идентификатором автора коммита; если указан, он должен быть прикреплён к опции без пробелов. --no-gpg-sign полезно для отмены как commit.gpgSign переменной конфигурации, так и ранее заданной --gpg-sign.

-s
--signoff

Добавить Signed-off-by трейлер в конце сообщения коммита. Для получения дополнительной информации см. опцию signoff в git-commit[1].

--strategy=<strategy>

Использовать заданную стратегию слияния. Следует использовать только один раз. Для получения подробностей см. раздел СТРАТЕГИИ СЛИЯНИЯ в git-merge[1].

-X<option>
--strategy-option=<option>

Передать опцию, специфичную для стратегии слияния, в стратегию слияния. Для получения подробностей см. git-merge[1].

--rerere-autoupdate
--no-rerere-autoupdate

После того, как механизм rerere повторно использует записанное решение конфликта для обновления файлов в рабочей директории, разрешить ему также обновить индекс результатом решения. --no-rerere-autoupdate — хороший способ проверить, что rerere сделал, и выявить возможные несовпадения перед фиксацией результата в индекс с помощью отдельного git add.

--reference

Вместо того, чтобы начинать тело сообщения журнала с «This reverts <full-object-name-of-the-commit-being-reverted>», обращаться к коммиту в формате «--pretty=reference» (см. git-log[1]). Переменная конфигурации revert.reference может использоваться для включения этой опции по умолчанию.

Подкоманды последователя

--continue

Продолжить текущую операцию, используя информацию в .git/sequencer. Может использоваться для продолжения после разрешения конфликтов в неудачном cherry-pick или отмене.

--skip

Пропустить текущий коммит и продолжить с остальной частью последовательности.

--quit

Забыть о текущей операции. Может использоваться для очистки состояния последователя после неудачного cherry-pick или отмены.

--abort

Отменить операцию и вернуться к состоянию до последовательности.

Примеры

git revert HEAD~3

Отменить изменения, указанные четвёртым последним коммитом в HEAD, и создать новый коммит с отменёнными изменениями.

git revert -n master~5..master~2

Отменить изменения, внесённые коммитами с пятого последнего коммита в master (включительно) до третьего последнего коммита в master (включительно), но не создавать коммита с отменёнными изменениями. Отмена изменяет только рабочую директорию и индекс.

Обсуждение

Хотя git создаёт базовое сообщение коммита автоматически, strongly рекомендуется объяснить, почему исходный коммит отменяется. Кроме того, многократные отмены приведут к всё более громоздким темам, например, Reapply "Reapply "<original-subject>"". Пожалуйста, подумайте над переформулировкой этих тем для краткости и уникальности.

Настройка

Всё ниже в этом разделе избирательно включено из документации git-config[1]. Содержимое такое же, как и там:

revert.reference

Установка этой переменной в значение true заставляет git revert вести себя так, как будто дана опция --reference.

См. также

git-cherry-pick[1]

revert

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-revert

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API