# git-revert
> 原文: [https://git-scm.com/docs/git-revert](https://git-scm.com/docs/git-revert)
## 名稱
git-revert - 恢復一些現有的提交
## 概要
```
git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…?
git revert --continue
git revert --quit
git revert --abort
```
## 描述
給定一個或多個現有提交,還原相關修補程序引入的更改,并記錄一些記錄它們的新提交。這需要您的工作樹是干凈的(沒有HEAD提交的修改)。
注意: _git revert_ 用于記錄一些新的提交以反轉某些早期提交的效果(通常只有一個錯誤的提交)。如果你想丟棄工作目錄中所有未提交的更改,你應該看到 [git-reset [1]](https://git-scm.com/docs/git-reset) ,特別是`--hard`選項。如果你想在另一個提交中提取特定文件,你應該看到 [git-checkout [1]](https://git-scm.com/docs/git-checkout) ,特別是`git checkout <commit> -- <filename>`語法。請注意這些替代方案,因為它們都會丟棄工作目錄中未提交的更改。
## OPTIONS
```
<commit>…?
```
承諾恢復。有關拼寫提交名稱的更完整列表,請參閱 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 。也可以給出提交集,但默認情況下不進行遍歷,請參閱 [git-rev-list [1]](https://git-scm.com/docs/git-rev-list) 及其`--no-walk`選項。
```
-e
```
```
--edit
```
使用此選項, _git revert_ 將允許您在提交恢復之前編輯提交消息。如果從終端運行命令,則這是默認設置。
```
-m parent-number
```
```
--mainline parent-number
```
通常,您無法還原合并,因為您不知道合并的哪一側應被視為主線。此選項指定主線的父編號(從1開始),并允許恢復相對于指定父級的更改。
還原合并提交聲明您永遠不會希望合并帶來的樹更改。因此,以后的合并只會帶來由不是先前還原的合并的祖先的提交引入的樹更改。這可能是也可能不是你想要的。
有關詳細信息,請參閱 [revert-a-faulty-merge How-To](howto/revert-a-faulty-merge.html) 。
```
--no-edit
```
使用此選項, _git revert_ 將不會啟動提交消息編輯器。
```
-n
```
```
--no-commit
```
通常,該命令會自動創建一些提交日志消息,提交哪些提交已被還原。此標志應用將命名提交還原到工作樹和索引所需的更改,但不進行提交。此外,使用此選項時,索引不必與HEAD提交匹配。恢復是針對索引的開始狀態完成的。
在將多個提交效果還原到行中的索引時,這非常有用。
```
-S[<keyid>]
```
```
--gpg-sign[=<keyid>]
```
GPG簽名提交。 `keyid`參數是可選的,默認為提交者標識;如果指定,它必須粘在沒有空格的選項上。
```
-s
```
```
--signoff
```
在提交消息的末尾添加Sign-by-by行。有關詳細信息,請參閱 [git-commit [1]](https://git-scm.com/docs/git-commit) 中的簽收選項。
```
--strategy=<strategy>
```
使用給定的合并策略。應該只使用一次。有關詳細信息,請參閱 [git-merge [1]](https://git-scm.com/docs/git-merge) 中的MERGE STRATEGIES部分。
```
-X<option>
```
```
--strategy-option=<option>
```
將合并策略特定選項傳遞給合并策略。有關詳細信息,請參閱 [git-merge [1]](https://git-scm.com/docs/git-merge) 。
## SEQUENCER SUBCOMMANDS
```
--continue
```
使用 _.git / sequencer_ 中的信息繼續進行中的操作。可以在解決失敗的挑選或恢復中的沖突后繼續使用。
```
--quit
```
忘記當前正在進行的操作。在櫻桃挑選或恢復失敗后,可用于清除順序器狀態。
```
--abort
```
取消操作并返回到預序列狀態。
## 例子
```
git revert HEAD~3
```
還原HEAD中第四個最后一次提交所指定的更改,并使用還原的更改創建一個新提交。
```
git revert -n master~5..master~2
```
將提交所做的更改從master(包含)中的第五個最后一次提交恢復到master(包含)中的第三個最后一次提交,但不要使用還原的更改創建任何提交。恢復僅修改工作樹和索引。
## 也可以看看
[git-cherry-pick [1]](https://git-scm.com/docs/git-cherry-pick)
## GIT
部分 [git [1]](https://git-scm.com/docs/git) 套件
- git
- git-config
- git-help
- git-init
- git-clone
- git-add
- git-status
- git-diff
- git-commit
- git-reset
- git-rm
- git-mv
- git-branch
- git-checkout
- git-merge
- git-mergetool
- git-log
- git-stash
- git-tag
- git-worktree
- git-fetch
- git-pull
- git-push
- git-remote
- git-submodule
- git-show
- git-log
- git-shortlog
- git-describe
- git-apply
- git-cherry-pick
- git-rebase
- git-revert
- git-bisect
- git-blame
- git-grep
- gitattributes
- giteveryday
- gitglossary
- githooks
- gitignore
- gitmodules
- gitrevisions
- gittutorial
- gitworkflows
- git-am
- git-format-patch
- git-send-email
- git-request-pull
- git-svn
- git-fast-import
- git-clean
- git-gc
- git-fsck
- git-reflog
- git-filter-branch
- git-instaweb
- git-archive
- git-bundle
- git-daemon
- git-update-server-info
- git-cat-file
- git-check-ignore
- git-checkout-index
- git-commit-tree
- git-count-objects
- git-diff-index
- git-for-each-ref
- git-hash-object
- git-ls-files
- git-merge-base
- git-read-tree
- git-rev-list
- git-rev-parse
- git-show-ref
- git-symbolic-ref
- git-update-index
- git-update-ref
- git-verify-pack
- git-write-tree