生活分享
Git、分支、diff 與還原
Git 保存檔案版本,分支承接一組修改,diff 顯示差異。Codex 可以協助操作,但你仍要確認修改屬於這次任務。聊天紀錄與 Git 歷史不同,恢復舊對話不會自動還原檔案。
閱讀時間約 15 分鐘 · 操作 30 分鐘

返回 Codex 教學總目錄Codex 學習中心:完整教學目錄從安裝、第一個任務到 MD 規則與進階整合,規劃 60 篇 Codex 教學、十個單元。依程度、平台、需求或指令搜尋下一篇;尚未公開的教學會標示狀態,方便安排學習路線。閱讀全文
目標與準備
先熟悉終端機路徑終端機與路徑:找到專案根目錄在 Windows、macOS、Linux 建立練習資料夾,確認目前目錄並辨識相對與絕對路徑。閱讀全文。工作目錄是目前磁碟內容,暫存區是下一次 commit 要包含的內容,commit 是已記錄的版本;三者可能不同。分支指向一條版本線,不會自動複製所有未提交檔案。要同時在多份目錄工作,另看worktreeWorktree 與多任務隔離Worktree 讓同一個 Git 程式庫有不同的工作目錄,各自承接不同分支。它適合讓兩項工作分開改檔,但資料庫、連接埠與外部服務仍可能共用,不能把檔案隔離當成所有資源隔離。閱讀全文,不要把建立分支當作完成備份。
步驟 1:建立獨立基準
在不屬於其他專案的新資料夾 codex-git-lab 放入 expected 的五個檔案。用編輯器開該資料夾與終端機,PowerShell 用 Get-Location、macOS/Linux 用 pwd 核對位置,再跑 git --version。若系統找不到 git,先依平台的 Git 官方安裝說明完成,重開終端機;不要在原本工作庫執行接下來的初始化。
git init -b main
git config user.name "Practice Learner"
git config user.email "learner@example.invalid"
git add index.html style.css app.js core.mjs core.test.mjs
git diff --cached --name-only
git commit -m "Add practice baseline"
git status --short
逐行執行,不略過中間檢查。初次暫存應恰好是五檔,提交後 status 應無變更。姓名與保留網域信箱只寫在這個練習庫的本機設定,不是 GitHub 登入,也沒有 --global。若 commit 遇到你既有的簽章或 hooks 要求,先依自己的設定完成或暫停記錄原因,不改全域政策來追求成功畫面。
步驟 2:在分支上做兩個可辨認修改
git switch -c codex/title-lab
git branch --show-current
確認分支是 codex/title-lab。用編輯器在 index.html 只把 h1 的 Make room for one small task. 改成 Plan one useful step.。另外在 style.css 最尾端加下面的註解,模擬另一份尚未提交的工作。這次要交付的是標題,CSS 註解必須保留在工作目錄但不能混入標題提交;兩個改動都是教材,無正式資料。
/* KEEP-MY-NOTE */
git status --short
git diff -- index.html style.css
diff 的減號是舊行,加號是新行,周圍未改內容提供定位。檢查 index.html 是否只改 h1,style.css 是否只多註解,不能只看「2 files changed」。如果請 Codex 說明,使用下列唯讀要求,讓它辨認現有工作及本次範圍;不要一開始就叫它提交所有差異。
Inspect this lab's current branch, status and diff without editing, staging or committing. The intended change is only the h1 title in index.html. The KEEP-MY-NOTE comment in style.css represents separate work and must be preserved. Explain what belongs in the title commit and what must stay outside it.
步驟 3:只暫存一檔,再練習還原
git add index.html
git diff --cached --name-only
git diff --cached -- index.html
git diff -- style.css
現在再做一次同檔案的差異比較:不要重新 git add,用編輯器只把已暫存的 Plan one useful step. 改成 Compare one useful step.。執行下面四行,觀察工作目錄、暫存區與 HEAD 的不同版本。
git status --short
git diff --cached -- index.html
git diff -- index.html
git show :index.html
status 應有 MM index.html 和未暫存的 style.css。這裡不是衝突;依 Git status 官方說明,第一欄 M 代表暫存區相對 HEAD 有改動,第二欄 M 代表工作目錄又相對暫存區有改動。cached diff 應是 Make → Plan,普通 diff 應是 Plan → Compare;show :index.html 讀到的是暫存版 Plan。若此時一般提交,Compare 不會自動跟進。
接著按原順序執行兩種 restore。第一行只移出暫存,Compare 仍在編輯器與磁碟;第二行會把 index.html 回復到此時暫存區中的基準舊標題。若略過第一行就做 worktree restore,來源仍是暫存的 Plan,結果會不同。Git restore 官方說明列出這個預設來源差異。執行前確認要丟棄的是這個練習標題;CSS 必須保留。
git restore --staged -- index.html
git restore --worktree -- index.html
git status --short
git diff -- style.css
此時 status 應只剩 style.css,h1 回到 Make room for one small task.,註解仍在。這是本篇最重要的保留檢查:撤銷自己的修改,不等於把別人的工作一起清乾淨。如果只執行 restore --staged,它並不刪除工作目錄內容;相反地 restore --worktree 會覆寫指定檔案,不能只看到 restore 一詞就把兩者當同義。
步驟 4:提交指定修改,再保留歷史撤回
重新用編輯器把 h1 改成 Plan one useful step.,再次只暫存 index.html 並檢查 cached diff。下面提交只應包含標題,style.css 註解繼續留在工作目錄。用 show 的檔名清單確認真正提交了什麼,不把終端機顯示成功當作範圍一定正確。
git add index.html
git diff --cached --name-only
git diff --cached -- index.html
git commit -m "Update practice title"
git show --format=short --name-only HEAD
git status --short
撤回已提交修改前先處理工作目錄。本教材只有自己加的 CSS 註解:確認內容已保留核對後,現在明確決定結束這個保留練習,用下列第一行只丟棄它。status 必須乾淨,再檢查最新提交確實是 Update practice title,才對 HEAD 執行 revert。正式工作若仍有其他修改,不照搬這個清理步驟,先保存或另行處理。
git restore --worktree -- style.css
git status --short
git log -1 --oneline
git revert --no-edit HEAD
git log -3 --oneline
git status --short
revert 會新增撤回提交,保留原本標題修改的歷史。預期 h1 回舊值,log 仍看得到基準、標題修改與撤回三筆,工作目錄乾淨。若出現衝突,先讀提示與實際狀態,不連按強制選項;只想取消這次未完成的 revert,可依 Git 指引使用 git revert --abort,之後重新檢查檔案。
命令對照、常見問題與驗收
| 目的 | 命令 | 核對點 |
|---|---|---|
| 看尚未暫存內容 | git diff | 工作目錄與暫存差異 |
| 看將提交內容 | git diff --cached | 暫存與 HEAD 差異 |
| 移出暫存 | git restore --staged -- index.html | 編輯仍在 |
| 丟棄指定未提交修改 | git restore --worktree -- index.html | 先確認來源與路徑 |
| 撤回已提交修改 | git revert --no-edit HEAD | 新增歷史,先確認目標及乾淨狀態 |
找不到分支先看是否在對的 repository;status 多出意外檔案就先查看,不使用 git add . 把它們一起帶進去。若同一檔案混有自己的與原有修改,整檔暫存會一起提交,應先讀懂每段差異再分段處理。這次驗收要能證明 CSS 在標題提交中被排除、兩種 restore 效果不同、revert 保留歷史。圖中 1 是辨認狀態,2 是限定提交,3 是驗證還原;下一步看測試、Review 與 PR測試、Code Review 與 PR測試確認程式在指定條件的行為,Code Review 檢查變更是否有遺漏或風險,PR 則讓人查看並討論要合併的差異。三者互補;通過測試不等於審查通過,開 PR 也不是已合併。閱讀全文。
返回 Codex 教學總目錄Codex 學習中心:完整教學目錄從安裝、第一個任務到 MD 規則與進階整合,規劃 60 篇 Codex 教學、十個單元。依程度、平台、需求或指令搜尋下一篇;尚未公開的教學會標示狀態,方便安排學習路線。閱讀全文
閱讀完整文字說明
Branch to Diff to Commit
同主題延伸閱讀
生活分享
Codex 學習中心:完整教學目錄
從安裝、第一個任務到 MD 規則與進階整合,規劃 60 篇 Codex 教學、十個單元。依程度、平台、需求或指令搜尋下一篇;尚未公開的教學會標示狀態,方便安排學習路線。
生活分享
實戰:製作小網站
從 brief.md 規劃並製作 Small Steps 待辦網站,完成新增、完成、刪除、篩選與本機資料保存。將 HTML、CSS、資料函式、畫面事件與測試分開,以 Node 測試和瀏覽器操作驗收,並留下可重新啟動與還原的交接紀錄。
生活分享
用量與效率:減少重工
記錄任務條件、模型選項、時間與成果,找出能減少無效重試和過多上下文的調整。
引用本文的文章
最新旅遊情報攻略

情報
2026 韓國楓葉預測:雪嶽山 10 月 20 日、首爾近郊 10 月底、內藏山與漢拏山 11 月上旬
韓國山林廳 2026 年 9 月 22 日公布的楓紅高峰預測:雪嶽山 10 月 20 日,春川、國立樹木園到首爾植物園落在 10 月 28 日到 11 月 2 日,內藏山 11 月 4 日、漢拏山 11 月 6 日,整體比最近 5 年晚約 0.8 天。整理各地楓樹與銀杏的預測日、首爾出發怎麼排,以及出發前去哪裡看即時楓況。2026 年 10 月查證。
- 季節活動
- 自然
- 觀景

攻略胡志明市
胡志明市到頭頓一日遊:白藤碼頭搭高速船、船票與班次,下船就是胡梅纜車與耶穌基督像
人在胡志明市挪一天去頭頓看海:市中心的白藤高速船碼頭搭船,航程 120 分鐘到頭頓的胡梅碼頭,平日成人 320,000 越南盾、週末 350,000,回程末班平日 15:00。下船就是胡梅纜車站,同一條路上有白宮,小山頂上是耶穌基督像。平日一天只有兩班船,整天要從末班船倒推著排。
- 交通
- 行程範例
- 海灘

攻略沖繩
沖繩不開車攻略:單軌只到浦添,美麗海水族館要坐兩個多小時的巴士,回那霸的最後一班直達車 17:22 就開走
不租車的沖繩怎麼移動:那霸市區靠沖繩都市單軌電車(ゆいレール),那霸機場站到終點てだこ浦西 19 站、17 公里、37 分鐘,一日券 1,000 日圓;美麗海水族館有那霸機場直達的高速巴士,單程 2,000 日圓起、官方時刻表上 2 小時上下,下車後還要走 10 分鐘;古宇利島要在今帰仁村役場轉車,當天來回光坐車就六個半小時;回程的最後一班直達車 17:22 就從記念公園前開走(2026 年 9 月查證)。
- 交通
- 行程範例
- 預算
資料來源
- Git installation · 查證日期:
- Git init · 查證日期:
- Git diff · 查證日期:
- Git restore · 查證日期:
- Git revert · 查證日期:
- Codex review workflow · 查證日期: