在 Visual Studio 中撤銷本地提交但未推送的修改,可以通過以下方法實現:
一、保留修改內容(僅撤銷提交記錄)
-
使用
git reset --soft
在 VS 的 Git 終端中執行:git reset --soft HEAD~1
- 作用:撤銷最后一次提交,但保留所有文件修改在 暫存區(即已
git add
的狀態)。 - 適用場景:想重新整理提交信息或拆分修改內容。
- 作用:撤銷最后一次提交,但保留所有文件修改在 暫存區(即已
-
使用
git reset --mixed
(默認選項)git reset HEAD~1
- 作用:撤銷提交,并將修改保留在 工作區(即未
git add
的狀態)。 - 適用場景:需要重新選擇部分文件提交。
- 作用:撤銷提交,并將修改保留在 工作區(即未
二、徹底丟棄修改內容(還原到提交前狀態)
-
使用
git reset --hard
git reset --hard HEAD~1
- 作用:完全刪除最后一次提交及其所有修改,還原到上一個提交的代碼狀態。
- 警告:此操作不可逆!確保已備份重要代碼。
-
通過 VS 界面操作
- 打開 團隊資源管理器 → 分支 → 右鍵目標分支 → 重置 → 選擇 硬重置。
三、撤銷多個未推送的提交
git reset HEAD~n # n 表示要撤銷的提交數量(如 HEAD~2 撤銷最近兩次提交)
- 可搭配
--soft
、--mixed
、--hard
參數控制還原程度。
四、補充說明
- 查看提交歷史
在終端輸入git log --oneline
或通過 VS 的 提交歷史 界面確認要撤銷的提交 ID。 - 恢復誤刪的修改
如果誤用--hard
,可通過git reflog
找到提交哈希值,再git reset --hard <commit_id>
恢復。
操作流程總結
需求 | 命令/操作 | 結果狀態 |
---|---|---|
修改保留在暫存區 | git reset --soft HEAD~1 | 可重新提交或修改 |
修改保留在工作區 | git reset HEAD~1 或默認重置 | 需重新 git add |
徹底刪除修改 | git reset --hard HEAD~1 | 完全還原到上一版本 |
注意:以上操作僅影響本地倉庫,未推送的提交不會同步到遠程倉庫。