git fetch git pull 区别

1. fetch 与 pull

2. 用法

3. 区别

答:

1.

2. 一般远端仓库里有新的内容更新,当我们需要把新内容下载的时候,就使用到git pull或者git fetch命令

fetch

例如从远程的origin仓库的master分支下载代码到本地并新建一个temp分支

git fetch origin master:temp

如果上述没有冒号,则表示将远程origin仓库的master分支拉取下来到本地当前分支

这里git fetch不会进行合并,执行后需要手动执行git merge合并,如下:

git merge temp

git merge temp

pull

例如将远程主机origin的master分支拉取过来,与本地的branchtest分支合并,命令如下:

git pull origin master:branchtest

同样如果上述没有冒号,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并

3.相同点:

不同点:

补充

补充:fetch / pull 关键差异:

  • git fetch <remote>:只下载远端对象到本地仓库,不自动合并,工作区 / 暂存区不变,安全性最高。
  • git pull <remote> <branch>:= fetch + merge(默认),把远端新 commit 合并到当前分支;加 --rebase 改为 fetch + rebase,保持历史线性。
  • 最佳实践:日常开发用 git pull --rebase,避免无关的 merge commit;多人协作 feature 分支在 rebase 后用 git push --force-with-lease 推送(比 --force 更安全,会拒绝远端有未同步更新时的覆盖)。
  • 关联上游:git branch --set-upstream-to=origin/main main 之后可以直接 git pull 不带参数。

来源整理自:我的有道云笔记