Git 路線圖Git Roadmap單元 10Unit 10
安全復原Safe recovery

復原與常見事故Undo changes and recover safely

UNIT 10 · UNDO & RECOVERY

復原與常見事故Undo changes and recover safely

依照內容在哪一區、是否已分享,選對 restore、revert 或 reset。Choose restore, revert, or reset based on where the change is and whether it was shared.

預計時間Estimated time
25–35 分鐘25–35 minutes
單元類型Unit format
教材+模擬器Lesson + simulator
需要先會Prerequisite
看懂 Working、Staging、commitUnderstand Working, Staging, and commits

先問「內容在哪裡」,再選復原工具

尚未 staged 的修改,可用 git restore <path> 放棄;已 staged 但想保留工作內容,用 git restore --staged <path>

已經 commit 且分享出去,通常優先使用 git revert <commit> 新增反向 commit,因為它不改寫別人已取得的歷史。

reset 會移動 branch:

  • --soft:保留在 Staging Area。
  • 預設 mixed:保留在 Working Directory。
  • --hard:連工作內容一起丟棄,風險最高。

看到事故時先停下來,不要連續嘗試多個指令。先用 git statusgit log --oneline 確認狀態,再選影響範圍最小的方法。

Ask “where is the content?” before choosing a recovery tool

Discard unstaged changes with git restore <path>. If the change is staged but you want to keep the work in your directory, use git restore --staged <path>.

For a commit that was already shared, prefer git revert <commit> to add an inverse commit because it does not rewrite history that others already have.

reset moves a branch:

  • --soft: keep the changes in the Staging Area.
  • Default mixed: keep the changes in the Working Directory.
  • --hard: discard the work too; this is the highest-risk option.

When something goes wrong, stop instead of trying several commands in a row. Check git status and git log --oneline, then choose the smallest-impact method.

INTERACTIVE LAB

在安全模擬器裡親手操作

輸入指令後,Terminal、四個區域與 Git 樹會從同一份虛擬狀態同步更新。

A

WORKING DIRECTORY

正在編輯的檔案

  • README.md已暫存
  • app.js已修改
  • nav.js已提交
B

STAGING AREA

下一版準備內容

  • README.md已暫存
C

LOCAL REPOSITORY

電腦裡的版本

HEAD
→ main
目前 commit
c3
commit 數
3
D

REMOTE REPOSITORY

GitHub 示意狀態

origin
尚未設定
遠端 branch
沒有 commit
網路連線
僅記憶體模擬

教學 Terminal

不會執行真實 Git 或 shell

教學模擬器已就緒。這裡不會執行真實 Git 或讀寫你的檔案。

點一下填入:

VIRTUAL FILES

虛擬檔案編輯器

更多情境工具

LIVE GIT TREE

commit 與 branch

HEAD → main
  1. c3
    HEAD → main
    調整首頁標題parent:c2
  2. c2
    加入導覽列parent:c1
  3. c1
    建立專案parent:無(第一個 commit)

CHECKPOINT

離開前,確認你能用自己的話說明Before you leave, explain it in your own words

  1. 這些指令改變 Git 的哪一個區域?
  2. Git 樹上的 branch 與 HEAD 移到哪裡?
  3. 失敗時 repository 是否保持原狀?
  4. 真實專案操作前,應先查看什麼?
  1. Which Git area does this command change?
  2. Where do the branch and HEAD move in the Git tree?
  3. Does the repository stay unchanged when the command fails?
  4. What should you check before operating on a real project?

免責聲明:本站內容為個人學習、實作與經驗分享紀錄,部分內容透過 AI 協助修正與整理。由於每位使用者的系統環境、軟體版本、權限設定與操作方式不同,實際結果可能有所差異。請在操作前自行評估風險並備份重要資料。因參考本站內容所造成之任何系統異常、資料遺失、設定錯誤、設備故障、服務中斷或其他直接、間接損失,均由使用者自行承擔,本站與作者不負任何相關責任。

Disclaimer: This site records personal learning, implementation, and experience sharing, with some content edited and organised with AI assistance. Results may differ because every user has a different system environment, software version, permission setup, and workflow. Assess risks and back up important data before trying anything. You are responsible for any system errors, data loss, configuration mistakes, equipment faults, service interruptions, or other direct or indirect losses resulting from using this content.