YouTube 影片筆記
兩小時 Git 教學用待辦專案實作暫存區、回滾與分支衝突
原片標題:一个视频学会 Git + GitHub:AI 编程必不可少的两个工具
原片說明
我原本以為 Git 這種東西看文件就好,結果馬克把「暫存區」講成一個具體的抽屜,我才發現自己以前根本沒搞懂 git add 在幹嘛。這支影片將近兩小時,從安裝一路講到 Worktree 跟 GitHub,中間還用「馬克待辦」這個小專案從頭做到尾,不是那種只念指令的教學。

影片時間軸
- 02:04從 Windows 安裝 Git,一路按 Next 到底
- 03:17macOS 安裝 Git,順帶裝了命令列開發者工具
- 04:56打開「馬克待辦」專案,示範 git init 前的狀態
- 09:37畫圖解釋工作區、暫存區、提交歷史三個區域
- 14:21設定使用者名稱與信箱,準備第一次 commit
- 15:55用 git log 看 commit 編號與提交紀錄
- 21:53改壞 index.html,示範工作區改動怎麼還原
- 27:56改動已進暫存區,用 git restore --staged 退回去
- 33:13改動已 commit,用 git reset --hard 整個砍掉
- 41:46改用 git revert 產生一個反向 commit 來回滾
- 46:17建立 .gitignore,把 notes.txt 排除在版控外
- 52:51建立 feature/due-date 分支,切過去開發新功能
- 64:22合併兩個分支時撞出 CONFLICT,手動解衝突
- 76:25用動畫解釋 rebase 是把 commit 一個一個搬過去
- 82:15用 git stash 把寫一半的改動收起來,切去修 bug
- 91:07用 git worktree 開第二個目錄同時開發統計功能
- 100:18產生 SSH key,貼到 GitHub 完成身分驗證
- 108:48刪掉整個專案資料夾,用 git clone 從 GitHub 救回來

暫存區不是多餘的手續
馬克用一張圖把工作區、暫存區、提交歷史拆開講,這段是整支影片的地基。他的說法是,暫存區讓你一次只挑想存進版本的東西,不用把整個資料夾的改動全部打包。後面所有回滾、分支、stash 的操作,其實都建立在這個三層結構上,這裡沒看懂,後面會整路卡。

回滾要看你改到哪一層
三種情境分得很清楚:只改工作區,用 git restore 就回來;已經 git add,要多一步 --staged 先退出暫存區;已經 commit,就得用 git reset --hard 把 HEAD 往回搬。馬克特別提醒 --hard 會連工作區的改動一起清掉,這段講得夠重,算是整支影片少數帶警告的地方。

合併衝突其實是兩邊都想加同一行
他故意讓排序功能和全部完成功能都去改同一段按鈕區,merge 下去直接 CONFLICT。畫面上把 HEAD 那邊和 feature 那邊的程式碼並排攤開,再手動刪掉標記符號,這段是整支影片最有臨場感的地方,比前面念指令有趣得多。

rebase 跟 merge 的差別講得比文件清楚
第一次合併是快進,master 直接往前挪;第二次因為兩邊都動過,Git 得新造一個合併 commit。馬克用動畫示範 rebase 是把分支上的 commit 一個一個拔起來、重新接到 master 後面,過程中照樣會撞衝突,得逐個解。這段把「換地基」這個比喻用到底,聽完大概就不會再搞混。

Worktree 是給同時開兩條線的人用的
stash 適合臨時被打斷,但如果你要一邊寫匯出、一邊趕統計,一直 stash 會很煩。worktree 讓同一個倉庫長出第二個目錄,各自有工作區和暫存區,但提交歷史只有一份。馬克也示範了刪 worktree 不能只丟資源回收桶,得用指令清掉,這個細節有講到。
值得下載嗎:值得,尤其你如果只會 add 跟 commit 就沒了。這支把回滾、分支、rebase、stash、worktree 一路串在同一個專案上,當複習教材留著很實用。