昨天我們學了 git push,知道怎麼把自己的 commit 傳上遠端。
但協作不是單向的,你的同事也會 push 新東西上去。
這時候,你要怎麼 更新本地的遠端資訊 呢?
今天的主角是 git fetch,它就像情報員一樣,幫你低調拿到最新情報,但不會直接干擾你的工作。
git fetch 是什麼?fetch 的意思就是「抓取」。
在 Git 世界裡,git fetch 會去遠端倉庫下載最新的資料,但只更新 遠端追蹤分支(remote-tracking branches),例如 origin/main。
它 不會動到你本地的分支,所以檔案內容也不會變。
換句話說:
git fetch= 拿到最新消息,但不行動
這和後續要講的 git pull 不同,git pull 是 fetch + merge,會直接把遠端更新合併到當前分支,有時可能導致衝突。
git fetch?想像你在開發專案,但同事可能已經在遠端分支做了修改。
git pull → 可能會意外合併,產生衝突。git fetch → 先打聽遠端最新動態,再決定是否合併,本地安全又安心。工作流程建議:
1️⃣ 先 git fetch 查看遠端最新消息
2️⃣ 再決定合併策略(git merge 或 git rebase)
# 從預設遠端(通常是 origin)抓取更新
git fetch
# 指定遠端
git fetch origin
# 指定分支
git fetch origin main
抓取後可以用以下方式查看更新的 commit :
git log main..origin/main
也可以用:
git log HEAD..origin/main --oneline
HEAD..origin/main:比對本地 HEAD 與遠端 main 的差異-oneline:簡化輸出,快速了解有哪些新提交這會顯示遠端有但你本地還沒有的 commit。
想先觀察,不想立刻合併
→ 適合在敏感專案中先確認變動。
多人協作,避免直接衝突
→ 先 fetch,再決定要不要 merge 或 rebase。
「我明明 fetch 了,為什麼檔案沒變?」
因為 fetch 只更新遠端追蹤分支,本地分支還沒同步。
要同步,需要手動 merge 或 rebase,例如:
git merge origin/main
git fetch,抓取遠端更新資料。git log HEAD..origin/main --oneline 查看遠端新提交。git merge origin/main 將更新合併到本地。git fetch 是低調型情報員:先打聽遠端最新消息,不改動本地分支。git log 與遠端分支比對,可以掌握團隊最新動態,為協作做好準備。git pull 的差別,就是 fetch 不會自動合併。明天我們將進入 Day 18:git pull —— 把遠端改動同步到本地
學會 pull 後,你就能把團隊最新的進度快速拉到本地,完成協作流程的最後一步,不再錯過任何更新。