在日常開發中,管理分支和遠端倉庫是一件不可避免的工作。
今天我們來進階探討 Git 本地分支(local)與遠端分支(remote)管理,幫助你更靈活地操作地端與遠端分支,避免不必要的衝突與混亂。
最常見的操作就是把本地分支推送到遠端:
git push origin main:main
localName:remoteName
:將本地 main
分支推送到遠端 main
。git push origin main
💡 小提醒:如果遠端分支不存在,Git 會自動建立,但不會自動設置追蹤(upstream)。
推送到遠端不同名稱分支:
git push origin main:dev
main
推送到遠端 dev
分支。git push --set-upstream origin dev:dev
git push
或 git pull
不需指定遠端。git checkout -t origin/dev
git checkout --track origin/dev
git switch --track origin/dev
dev
分支並追蹤 origin/dev
。git status
、git pull
都會知道要同步哪個遠端分支。💡 小技巧:如果只想抓取遠端分支,但不建立本地分支,可使用 fetch。
git remote show origin
範例輸出:
* remote origin
Fetch URL: git@github.com:username/repo.git
Push URL: git@github.com:username/repo.git
HEAD branch: main
Remote branches:
dev tracked
main tracked
feature/login tracked
Local branches configured for 'git pull':
dev merges with remote dev
main merges with remote main
Local refs configured for 'git push':
dev pushes to dev (up to date)
main pushes to main (up to date)
Fetch URL
/ Push URL
:遠端倉庫位置HEAD branch
:遠端預設分支Remote branches
:已追蹤的遠端分支Local branches configured for 'git pull/push'
:本地分支對應的遠端💡 小提醒:這是快速檢查遠端倉庫狀態的好工具,尤其在多分支、多開發者專案中。
git fetch
只抓取遠端資料,不會自動合併。
git fetch origin master
範例輸出:
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
From github.com:username/repo
* branch master -> FETCH_HEAD
remotes/origin/master
,但不建立本地分支。git fetch origin dev:refs/remotes/origin/master
dev
抓取,存到本地 remotes/origin/master
。git fetch origin main:dev
main
建立本地 dev
分支。git fetch --tags
# 抓取遠端所有 tag
git fetch -p
git fetch --prune
# 刪除已被遠端刪掉的分支,並抓取新分支
git remote prune origin
# 單純刪除本地已不存在的遠端分支
git remote set-branches --add origin dev
# 只抓 origin 的 dev 分支
git remote set-branches origin '*'
# 恢復抓全部分支
git branch -a
範例:
* main
dev
feature/login
remotes/origin/HEAD -> origin/main
remotes/origin/main
remotes/origin/dev
remotes/origin/feature/login
git branch -vv
範例:
* main 9a1b2c3 [origin/main] 修正 header 樣式
dev 7f4d6e1 [origin/dev] 新增登入頁
feature/login 3b2c1d0 [origin/feature/login: ahead 2] 開發 login 功能
[origin/feature/login: ahead 2]
→ 本地比遠端多 2 個 commit,推送前請確認是否要同步遠端。git branch -r
範例:
origin/HEAD -> origin/main
origin/main
origin/dev
origin/feature/login
git branch -vv
:快速檢查本地分支追蹤狀態git branch -r
:只看遠端分支git branch -a
:一次看到本地與遠端所有分支 origin/main
▲
│
┌───────┴───────┐
│ │
local/main local/dev (fetch/branch)
local/main
追蹤 origin/main
(upstream)local/dev
可由 fetch
或 checkout --track
建立local:remote
與 -set-upstream
是進階核心a/-r/-vv
幫助直觀了解本地與遠端狀態掌握這些技巧後,你在多分支、多遠端專案中會更有掌控力,也能減少誤操作。