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.
См. также
revert
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-revert