復原變更
本文內容
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
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 變更 ] 視窗中,使用您想要捨棄的變更來識別檔案。 如果檔案位於 [ 暫存變更 ] 區段中,請以滑鼠右鍵按一下它,然後選擇 [ 取消設置 ]。 未標記的檔案會顯示在 [變更 ] 區段中。
如果檔案位於 [變更 ] 區段中,請以滑鼠右鍵按一下該檔案,然後選擇 [ 復原變更 ],以捨棄自上次認可後對檔案所做的所有變更。
Visual Studio 支援藉由將檔案還原為最後一個認可的版本,來捨棄檔案的未認可變更。
在Team Explorer 的[變更 ] 檢視中,使用您想要捨棄的變更來識別檔案。 如果檔案位於 [ 暫存變更 ] 區段中,請以滑鼠右鍵按一下它,然後選擇 [ 取消設置 ]。 [ 變更 ] 區段中會顯示未標記的檔案
如果檔案位於 [變更 ] 區段中,請以滑鼠右鍵按一下該檔案,然後選擇 [ 復原變更 ],以捨棄自上次認可後對檔案所做的所有變更。
您可以使用 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 > 檢視分支歷程記錄 ] 以開啟最新分支的 [ 歷程記錄] 索引 標籤。
在最新分支的 [ 歷程記錄 ] 索引標籤中,以滑鼠右鍵按一下您要重設的認可,然後選擇 [ 重設 > 刪除變更] (--hard) ,將分支重設為選取的認可,並刪除該認可之後所有分支檔案的所有變更。 或者,選擇 [ 重設 > 保留變更] (混合) ,將分支重設為選取的認可,並將所有後續變更保留為未標記的變更。
在Team Explorer 的[變更 ] 檢視中,選擇 [動作 > 檢視記錄 ] 以開啟最新分支的 [歷程記錄] 索引 標籤。
在最新分支的 [ 歷程記錄 ] 索引標籤中,以滑鼠右鍵按一下您要重設的認可,然後選擇 [ 重設 > 刪除變更] (--hard) ,將分支重設為選取的認可,並刪除該認可之後所有分支檔案的所有變更。 或者,選擇 [ 重設 > 保留變更] (混合) ,將分支重設為選取的認可,並將所有後續變更保留為未標記的變更。
您可以使用 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.
下一步
相關文章