git fetch 和 git pull 的区别
如果你只是 git fetch
:
本地分支(例如
main
)不会动,还是你之前的状态。远端分支的更新会被下载下来,放在
origin/main
(或其它远程分支引用)。你的工作区代码、HEAD 指针都不变。
也就是说:
fetch 之后 = 你知道远端更新了,但你本地代码还没用上。
举个例子:
远端 origin/main
有 2 个新提交:
origin/main: A -- B -- C -- D
local main : A -- B
执行 git fetch
后,本地的状态:
origin/main: A -- B -- C -- D ✅(更新了)
local main : A -- B ❌(没动)
此时本地代码还停留在 B
,没有 C、D
。
你需要再执行 git merge origin/main
或 git rebase origin/main
,本地 main
才会“跟上”远程。
👉 所以总结:
git fetch
= 只更新远端分支引用,本地不变。git pull
=fetch
+ 合并/变基,本地才会同步。