【Git】還原相關
以下是關於 Git 還原(恢復)功能的完整說明,並在文末附上對照表,方便快速查閱。功能的完整說明
Git 還原功能總表
| 指令 |
|---|
git checkout .
工作目錄
否
否
還原已追蹤檔案
git restore .
工作目錄
否
否
推薦用法,等同於 checkout .
git restore --staged
暫存區
是
否
還原 git add 的檔案
git reset
暫存區
是
否
退回 staging 區
git reset --hard HEAD
工作目錄 + 暫存區
是
是(若搭配 clean)
徹底放棄所有變更(⚠危險)
git clean -fd
未追蹤檔案/資料夾
無關
是
清空未納入 Git 管控的檔案
git revert <commit>
版本歷史
無關
否
安全回復 commit(保留紀錄)
Git 還原功能完整整理與使用說明
在日常開發中,Git 提供多種指令用來還原工作目錄、暫存區,或是回復錯誤的 commit。根據不同的需求,選擇合適的還原方式可避免資料遺失或版本混亂。
1. git checkout .
還原所有「已追蹤檔案」回到最新 commit 的狀態。
-
作用範圍:僅限工作目錄(Working Directory)
-
不會還原:未追蹤(untracked)檔案與暫存區(Staging Area)
適用情境:
-
編輯了多個檔案,想快速放棄變更,但未進行
git add。
2. git restore(推薦用法)
git restore 是 Git 2.23+ 提供的新指令,取代過去 checkout 的混用狀況。
範例:
git restore . # 還原所有檔案
git restore path/to/file.js # 還原單一檔案
-
與
git checkout .行為一致,語意更清楚 -
可搭配
--staged還原暫存區(如下)
3. git restore --staged
還原暫存區的內容,讓已 git add 的檔案退回至工作目錄狀態。
git restore --staged path/to/file.js
-
不會影響工作區的內容
-
常用於誤將檔案加入 staging 區的情況
4. git reset
還原 staging 區(暫存區),讓所有已 git add 的檔案回到修改中狀態。
git reset
-
與
git restore --staged功能類似 -
不會更動工作目錄內容
5. git reset --hard HEAD
將 工作目錄與暫存區 都還原成最近一次提交(HEAD)的狀態。
git reset --hard HEAD
-
非常危險,會清除未提交的所有變更
-
包含
git add過的內容也會消失
適用情境:
-
變更混亂,想完全清空所有未提交的東西
6. git clean -fd
清除所有「未被追蹤的檔案與資料夾」。
git clean -fd
-
-f:強制執行 -
-d:包括未追蹤的資料夾
適用情境:
-
清除 build 檔案或不小心留下的臨時檔案
7. git revert
對某個已提交的 commit 產生一個「反向操作的 commit」。
git revert <commit_hash>
-
保留歷史紀錄
-
安全的還原方式,尤其在多人開發時
適用情境:
-
上線後發現某次 commit 有錯誤,需在版本歷史中保留修正記錄
Git 還原功能總表
git checkout .git restore .git restore --stagedgit addgit resetgit reset --hard HEADgit clean -fdgit revert <commit>如你有實際情境(例如:誤改程式碼、誤刪資料夾、上線前清理等),我也可以幫你對應推薦最合適的指令。是否需要一併整理成 shell script?