git pull 和 git fetch 的区别你知道吗?

git pull 和 git fetch是什么

  • git fetch 命令用于从另一个存储库下载对象和引用
  • git pull 命令用于从另一个存储库或本地分支获取并集成

当远端仓库里有新的内容时,就要使用到git pull或者git fetch命令把新的内容下载下来。

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。而git pull 则是将远程主机的最新内容拉下来后直接合并 ,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决

在我们本地的git文件中对应也存储了git本地仓库分支的commit ID和 跟踪的远程分支的commit ID,对应文件如下:

  • .git/refs/head/本地分支
  • .git/refs/remotes/正在跟踪的分支

使用 git fetch更新代码,本地的库中master的commitID不变,但是与git上面关联的那个orign/master的commit ID发生改变。这时候我们本地相当于存储了两个代码的版本号,我们还要通过merge去合并这两个不同的代码版本。也就是fetch的时候本地的master没有变化,但是与远程仓关联的那个版本号被更新了,接下来就是在本地merge合并这两个版本号的代码。

使用git pull就会直接将本地的代码更新至远程仓库里面最新的代码版本。

用法

git fetch

git fetch用法如下:

xml 复制代码
git fetch <远程主机名> <远程分支名>:<本地分支名>

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

sql 复制代码
git fetch origin master:temp

git pull

两者的用法十分相似,git pull用法如下:

xml 复制代码
git pull <远程主机名> <远程分支名>:<本地分支名>

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

复制代码
git pull origin master:branchtest

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

区别

相同点:

  • 在作用上他们的功能是相同的,都是起到了更新代码的作用。

不同点:

  • **git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge,**即git pull = git fetch + git merge。
  • git fetch更安全,在merge前,我们可以查看更新情况,根据实际情况再决定是否合并。
相关推荐
jktantan3 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
2601_962885724 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel4 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓4 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人5 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every5 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad5 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新6 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易6 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
风骏时光牛马7 小时前
AI稳定性治理体系构建与疑难问题深度分析
前端