Git 進階指令教學:branch、merge、checkout、stash
在學會 git init
、git add
、git commit
這些基本指令後,接下來最常遇到的情境就是:
這時候就會用到 分支 (branch)、合併 (merge)、切換 (checkout) 和 暫存 (stash)。
分支(branch)就像遊戲的「分支存檔」,你可以在不同分支上實驗,最後再合併到主要進度。
git branch
範例輸出:
* main
feature-login
*
代表目前所在的分支。git branch feature-login
feature-login
的分支,但還沒切換過去。git checkout -b feature-login
或是新寫法:
git switch -c feature-login
checkout
可以用來切換分支,也能回到某個舊版本。
git checkout feature-login
feature-login
分支。當你在某個功能分支完成後,要把它合併回主要分支。
git checkout main
git merge feature-login
main
merge
把 feature-login
的內容合併進來有時候你正在寫一半,突然需要切去別的分支修 bug,但又不想 commit 未完成的內容,這時可以用 stash
。
git stash
git stash list
範例輸出:
stash@{0}: WIP on feature-login: 1234abc 修正登入表單
git stash apply stash@{0}
git stash pop
git stash drop stash@{0}
假設你正在開發 feature-login
分支,但突然有人回報 main 分支有 bug:
# 先暫存修改
git stash
# 切換到 main 分支
git checkout main
# 修 bug 並提交
git commit -am "修正 main bug"
# 切回 feature-login
git checkout feature-login
# 取回剛剛 stash 的修改
git stash pop