學 Git 的人,大概都經歷過這種時刻:
我只是想切換到另一個分支,結果一個 git checkout
,整個檔案內容瞬間改變,好像被拉進了另一個平行時空。
還來不及反應,剛剛辛苦改的東西就「不見了」。
😱 那一刻真的會懷疑人生。
但冷靜一下,其實檔案沒有消失,只是被 Git 暫時收起來。這就是 checkout 和 switch 在幹的事 —— 幫你在不同版本之間穿梭。
git checkout
是什麼?在 Git 裡,git checkout
有兩種用途:
切換分支:到另一個開發線(branch)。
git checkout feature/login
👉 就像回到「另一個平行時空」,檔案瞬間換成該分支的狀態。
還原檔案:把檔案退回到某個版本。
git checkout HEAD~1 index.html
👉 就像「穿越回昨天」,把 index.html
回復到前一版。
雖然功能強大,但也因為太多用途,常常把新手搞得一頭霧水。
git switch
?Git 開發團隊後來覺得,checkout
太萬能了,大家容易誤用。
於是新增了更直覺的指令:
git switch
👉 專門用來切換分支
git switch feature/login
git restore
👉 專門用來還原檔案(Day 5 我們講過)
這樣一拆分,switch
、restore
分工更清楚,新手也比較不會誤操作。
切換到已存在的分支
git switch main
建立並切換到新分支
git switch -c feature/signup
使用舊方法(checkout)也行
git checkout -b feature/signup
切回上一次所在的分支
git switch -
這個最後一招超好用,常在 main
和 feature
分支之間跳來跳去的時候,省下很多打字時間。
如果把專案比喻成一款 RPG 遊戲:
這樣一來,新手就能快速分辨「我現在到底是在切世界,還是單純修東西」。
多人協作開發
Alice 在 feature/login
Bob 在 feature/payment
他們最後會各自合併回 main
👉 這就是典型的分支並行作業
嘗試新功能,不影響主線
git switch -c experiment-ui
在新分支亂改亂試,不喜歡就刪掉,完全不會影響 main
。
快速回到穩定版本
git switch main
立刻切回穩定環境,避免被還沒測完的功能污染。
有一次同事在 main
分支上改了 20 個檔案,還沒 commit 就執行:
git checkout develop
結果切換分支時檔案不相容,Git 把他所有修改「暫藏起來」。
最後他花了一個下午才把東西救回來。
👉 解法:要養成切換分支前先 commit 或 stash的習慣,否則真的很容易翻車。
git switch -c feature/test
建立一個新分支並切換過去。git switch main
,觀察會發生什麼事。git switch -
在 main
與新分支之間快速切換。git checkout
是老前輩,功能強大但複雜;
git switch
則是新世代,專注於「切換分支」,更直覺也更安全。
學會這兩招,就能像時間旅行者一樣,在不同版本與分支之間自由穿梭,再也不怕穿越時空迷路。