設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.50.1 → 2.52.0 無更改
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 無更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 無更改
-
2.43.0
2023-11-20
- 2.39.1 → 2.42.4 無更改
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 無更改
-
2.38.0
2022-10-02
- 2.37.1 → 2.37.7 無更改
-
2.37.0
2022-06-27
- 2.30.1 → 2.36.6 無更改
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 無更改
-
2.27.0
2020-06-01
- 2.23.1 → 2.26.3 無更改
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 無更改
-
2.22.0
2019-06-07
- 2.10.5 → 2.21.4 無更改
-
2.9.5
2017-07-30
- 2.8.6 無更改
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 無更改
-
2.0.5
2014-12-17
概要
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] 中的“Reset、restore 和 revert”部分。
選項
- <commit>…
-
要撤銷的提交。有關拼寫提交名稱的更完整列表,請參閱 gitrevisions[7]。也可以給出提交集,但預設情況下不進行遍歷,請參閱 git-rev-list[1] 及其
--no-walk選項。 - -e
- --edit
-
使用此選項,git revert 將允許您在提交撤銷之前編輯提交訊息。如果您從終端執行命令,這是預設行為。
- -m parent-number
- --mainline parent-number
-
通常您無法撤銷合併,因為您不知道合併的哪一側應被視為主線。此選項指定主線的父級編號(從 1 開始),並允許撤銷相對於指定父級的更改。
撤銷合併提交宣告您永遠不想要合併引入的樹更改。因此,後續合併只會引入未成為先前已撤銷合併祖先的提交所引入的樹更改。這可能符合您的預期,也可能不符合。
有關更多詳細資訊,請參閱 revert-a-faulty-merge 操作指南。
- --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尾部。有關更多資訊,請參閱 git-commit[1] 中的 signoff 選項。 - --strategy=<strategy>
-
使用指定的合併策略。應該只使用一次。有關詳細資訊,請參閱 git-merge[1] 的 MERGE STRATEGIES 部分。
- -X<option>
- --strategy-option=<option>
-
將合併策略特定的選項傳遞給合併策略。有關詳細資訊,請參閱 git-merge[1]。
--rerere-autoupdate--no-rerere-autoupdate-
在 rerere 機制使用記錄的衝突解決來更新工作樹中的檔案後,允許它也用解決結果更新索引。
--no-rerere-autoupdate是一個很好的方式來雙重檢查rerere所做的操作,並在使用單獨的gitadd將結果提交到索引之前,捕獲潛在的錯誤合併。 - --reference
-
而不是以“This reverts <full-object-name-of-the-commit-being-reverted>.”開頭日誌訊息的正文,請使用“--pretty=reference”格式引用提交(參見 git-log[1])。
revert.reference配置變數可用於預設啟用此選項。
討論
雖然 git 會自動建立一個基本的提交訊息,但強烈建議解釋為什麼原始提交被撤銷。此外,反覆撤銷會產生越來越笨拙的主題行,例如 Reapply "Reapply "<original-subject>""。請考慮將其重寫得更短、更獨特。
配置
本節中以下所有內容均從 git-config[1] 文件中選擇性地包含。內容與彼處相同: