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不带参数。
来源整理自:我的有道云笔记



