Git 回退



git revert 命令建立一個新的提交,用於撤銷指定先前提交的更改,而不會更改提交歷史。

  • 它常用於撤銷修改,同時保持專案的過去完整。

  • 在共享倉庫中撤銷更改時,此命令比git reset更安全。

要點

在使用git revert 命令之前,您應該記住一些要點

  • 在執行命令之前,確保我們的工作區是乾淨的。

  • 使用git reset --hard 刪除未提交的更改,並使用git restore --source 從較早的提交中恢復某些檔案。

  • 這兩個選項都將刪除我們目錄中任何未提交的工作。

語法

git revert <commit>

選項

git revert 命令具有以下選項

<commit>…​

  • <commit> 指示您希望回退的提交。

  • 您可以在一次操作中提及多個提交進行回退。

  • 使用git-rev-list 以及--no-walk 選項允許我們遍歷提交集,這在預設情況下不會執行。

-e

--edit

  • 在完成回退之前,您可以使用git revert 命令中的-e--edit 選項更改提交訊息。

  • 在使用終端執行命令時,預設情況下啟用此選項。

  • 您可以根據需要更改回退提交訊息。

-m parent-number

--mainline parent-number

  • 在 Git 中,-m parent-number 選項指示合併提交的父級,在合併回退的情況下用作主線

  • 您可以透過選擇父級編號(從 1 開始)來指定哪一側的合併用作撤銷修改的參考。

  • 透過從回退合併的祖先中刪除更改,回退合併提交實際上會丟棄在該合併期間所做的更改。

  • 這可能會影響後續合併。

--no-edit

  • 當在git revert 命令中使用--no-edit 選項時,Git 不會開啟提交訊息編輯器。

  • 使用此選項時,Git 會回退到自動生成的提交訊息。

  • 無需使用者輸入或修改。

--cleanup=<mode>

  • 在提交更改之前,Git 會根據--cleanup=<mode> 選項格式化和清理提交訊息。

  • 您可以將<mode> 設定為您想要的任何值,例如scissors,這會在發生衝突的情況下向MERGE_MSG 新增scissors 行。

-n

--no-commit

  • 使用 Git,您可以將回退更改應用於我們的工作區和索引,而無需生成提交,方法是使用-n--no-commit 選項。

  • 這使您可以在最終確定更改之前檢視或編輯更改,並依次回退多個提交。

-S[<keyid>]

--gpg-sign[=<keyid>]

--no-gpg-sign

  • 使用-S[<keyid>]--gpg-sign[=<keyid>] 選項使用 GPG 金鑰對提交進行簽名。

  • 您可以省略<keyid> 引數,但如果您這樣做,它必須緊跟在選擇之後,中間沒有空格,並且它表示要使用哪個 GPG 金鑰。

  • 如果未指定金鑰,則預設使用提交者的身份金鑰。

  • 當使用--no-gpg-sign 選項(停用提交的 GPG 簽名)時,任何允許自動簽名的全域性設定或任何先前使用的--gpg-sign 選項都將被覆蓋。

-s

--signoff

  • 當使用-s--signoff 選項時,提交訊息將以Signed-off-by 行完成。

  • 此行通常用於遵守專案中的貢獻要求,包含提交者的姓名和電子郵件地址,並表明他們對更改承擔責任。

--strategy=<strategy>

  • 使用--strategy=<strategy> 選項指定合併分支時要使用的合併策略。

  • Git 使用此選項來確定如何解決衝突以及如何合併來自不同分支的更改,因此您應該每個合併命令只使用一次。

-X<option>

--strategy-option=<option>

  • 您可以使用-X<option>--strategy-option=<option> 選項為正在使用的合併策略提供額外的、特定於策略的引數。

  • 這使您可以根據所選策略的選擇對合並的執行進行細粒度的控制。

--rerere-autoupdate

--no-rerere-autoupdate

  • 透過使用--rerere-autoupdate 選項,Git 可以使用記錄的衝突解決結果自動更新索引。

  • 在手動將解決方案新增到索引之前,您可以使用--no-rerere-autoupdate 在工作區中檢視並確認它。

--reference

  • 透過以更簡潔的方式引用原始提交,--reference 選項更改回退提交的日誌訊息正文。

  • --pretty=reference 格式指定較短的引用格式,該格式用於替換預設訊息格式This reverts <full-object-name-of-the-commit-being-reverted>

  • 此行為可以透過使用revert.reference 配置設定設定為預設值。

總而言之,git revert 命令建立一個新的提交來撤銷先前提交的更改。在共享倉庫中使用它是安全的,因為它不會更改提交歷史。上面提到的選項提供了更大的靈活性,例如在不提交的情況下回退和處理合併提交。

廣告

© . All rights reserved.