復原變更
本文內容
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
當您想要復原 Git 存放庫中的變更時,請先決定您要復原的變更類型。 例如,您可能要:
將檔案還原為最後一個認可的版本,以捨棄檔案的未認可變更。 您也可以將檔案還原為任何認可的版本。
將分支重設為先前的認可,將分支還原為先前的狀態。
建立可反轉變更的新認可,以復原共享認可所做的變更。 由於此方法不會重寫現有的認可歷程記錄,因此適合反轉由推送且供其他人使用的認可所做的變更。
修改您的最後一個認可,以修改其內容或訊息。 如需詳細資訊,請參閱 如何更新上次認可 。
藉由建立包含修正的新 認可 ,以修正先前認可中導入的問題。 如需詳細資訊,請參閱 如何建立認可 。
在本文中,您將了解如何:
捨棄檔案的未認可變更
將分支還原為先前的狀態
復原共享認可所做的變更
捨棄檔案的未認可變更
如果您已對檔案進行變更,但尚未認可這些變更,您可以使用 Git 簽出 來快速捨棄變更,並將檔案還原為其最後認可版本。
當您指定認可標識符時,Git checkout
也可以將檔案還原為任何認可的版本。
警告
如果可能想要重新套用 Git checkout
會捨棄的變更,請考慮 改為隱藏 這些變更。
Visual Studio 2022 提供 Git 版本控制體驗,方法是使用 Git 功能表、Git 變更 ,以及透過 方案總管 中的 操作功能表。 Visual Studio 2019 16.8 版也提供 Team Explorer Git 使用者介面。 如需詳細資訊,請參閱 Visual Studio 2019 - Team Explorer 索引標籤。
Visual Studio 支持藉由將檔案還原為其最後認可版本來捨棄檔案的未認可變更。
在 [ Git 變更 ] 視窗中,使用您想要捨棄的變更來識別檔案。 如果檔案位於 [ 分段變更 ] 區段中,請以滑鼠右鍵按兩下它,然後選擇 [Unstage ]。 未標記的檔案會顯示在 [變更 ] 區段中。
如果檔案位於 [變更 ] 區段中,請以滑鼠右鍵按兩下它,然後選擇 [復原變更 ] 以捨棄檔案自上次認可后的所有變更。
Visual Studio 支持藉由將檔案還原為其最後認可版本來捨棄檔案的未認可變更。
在 Team Explorer 的 [變更 ] 檢視中,使用您想要捨棄的變更來識別檔案。 如果檔案位於 [ 分段變更 ] 區段中,請以滑鼠右鍵按兩下它,然後選擇 [Unstage ]。 [變更] 區段中會顯示 未標記的檔案
如果檔案位於 [變更 ] 區段中,請以滑鼠右鍵按兩下它,然後選擇 [復原變更 ] 以捨棄檔案自上次認可后的所有變更。
您可以使用 Git checkout
命令,將檔案還原為其最後一個認可版本,以捨棄檔案的未認可變更:
git checkout <file>
例如, git checkout README.md
捨棄檔案的未認可變更 README.md
。
當您指定可唯一識別認可的部分或完整認可標識符時,Git checkout
也支援將檔案還原為先前認可的版本:
git checkout <commit ID> <file>
如需尋找認可標識碼的詳細資訊,請參閱 尋找認可標識符 。
注意
使用 Git checkout
命令來還原檔案與一般用途不同,也就是在分支之間 切換。 checkout
命令輸出會告訴您它是否在分支之間切換或更新檔案,並警告您是否不清楚您嘗試執行的動作。
將分支還原為先前的狀態
您可以使用 Git 重設 將分支重設為先前的認可,將分支還原為先前的狀態。 Git reset
會影響所有分支資料夾中的所有檔案。
Git reset
有幾個選項。 默認選項是將分支還原為先前的認可,但保留所有後續變更作為未認可的變更。 另一個選項是將分支還原為先前的認可,方法是捨棄自該認可以來所有分支檔案的所有變更。
警告
如果上次認可已推送並與他人共用,請勿將分支重設為上次認可之前的認可。 這樣做會導致您的本機分支歷程記錄不再符合遠端分支歷程記錄。 如需共用分支,請參閱 復原共享認可 所做的變更。
從功能表欄中,選擇 [Git > 檢視分支歷程記錄 ] 以開啟 最新分支的 [歷程記錄 ] 索引標籤。
在最新分支的 [歷程記錄 ] 索引標籤中,以滑鼠右鍵按下您要重設的認可,然後選擇 [重>設刪除變更], 將分支重設為選取的認可,並刪除認可后所有分支檔案的所有變更。 或者,選擇 [重設保留變更] (--mixed) 將分支重設為>選取的認可,並將所有後續變更保留為未標記的變更。
在 Team Explorer 的 [變更 ] 檢視中,選擇 [動作>檢視歷程記錄 ] 以開啟最新分支的 [歷程記錄 ] 索引卷標。
在最新分支的 [歷程記錄 ] 索引標籤中,以滑鼠右鍵按下您要重設的認可,然後選擇 [重>設刪除變更], 將分支重設為選取的認可,並刪除認可后所有分支檔案的所有變更。 或者,選擇 [重設保留變更] (--mixed) 將分支重設為>選取的認可,並將所有後續變更保留為未標記的變更。
您可以使用 Git reset
將分支還原為先前認可中的狀態。 Git reset
命令可以搭配各種旗標使用:
旗 --hard
標會指示 Git 將分支重設為指定的認可,並捨棄所有後續的變更。 請小心使用此選項,因為您可以使用此選項遺失工作。
旗 --mixed
標會指示 Git 將分支重設為指定的認可,但保留所有後續變更為未標記的變更。 這個選項是預設值。
旗 --soft
標會指示 Git 將分支重設為指定的認可,但要讓所有後續變更保留為暫存,並根據其先前狀態取消標記的變更。
Git reset
的常見用法是 --hard
,您可以選擇捨棄自上次認可后所有檔案中所有未認可的變更:
git reset --hard
若要將分支硬式重設為與上次認可不同的認可,請指定可唯一識別認可的認可標識碼或部分認可標識符:
git reset --hard <commit ID>
如需尋找認可標識碼的詳細資訊,請參閱 尋找認可標識符 。
復原共享認可所做的變更
您可以使用 Git 還原 來復原認可所做的變更,以建立可反轉這些變更的新認可。 Git revert
不會刪除原始認可。 此方法適用於復原共享認可所做的變更,因為 Git revert
不會改變先前的認可歷程記錄,因此本機和遠端分支歷程記錄會繼續相符。
從功能表欄中,選擇 [Git > 檢視分支歷程記錄 ] 以開啟 最新分支的 [歷程記錄 ] 索引標籤。
在最新分支的 [ 歷程記錄 ] 索引標籤中,以滑鼠右鍵按下您要還原的認可,然後選擇 [還原 ] 以建立新的認可,以復原所選認可所做的變更。
在 Team Explorer 的 [變更 ] 檢視中,選擇 [動作>檢視歷程記錄 ] 以開啟最新分支的 [歷程記錄 ] 索引卷標。
在最新分支的 [ 歷程記錄 ] 索引標籤中,以滑鼠右鍵按下您要還原的認可,然後選擇 [還原 ] 以建立新的認可,以復原所選認可所做的變更。
您可以使用 Git revert
命令來復原認可所做的變更,並使用反向變更建立新的認可。 其變更已反轉的認可會保留在 Git 歷程記錄中。
git revert <commit ID>
如果還原作業成功,Git 會開啟編輯器視窗,提示您輸入新認可的認可訊息。
Git 會在還原作業期間發生衝突時通知您。 您可以解決衝突,然後執行 git revert --continue
,或執行 git revert --abort
以復原還原作業。
尋找認可標識碼
您可以使用 Git log
命令來取得認可識別碼。 旗 --oneline
標會縮寫輸出。
git log --oneline <branch>
Git log
命令會先列出最新的認可,從指定分支的提示處開始認可(如果未指定,則為最新分支),然後逐一查看上階認可。 縮寫輸出中的每個認可標識碼都是可唯一識別認可的部分 SHA-1 總和檢查碼。 例如, git log --oneline main
可能會輸出:
e745d06 (HEAD -> main) Add a test initialization class
31da50b Add network switch test
0c14391 Add readme file
32e3946 Add project files.
下一步
相關文章