本文转载自微信公众号「JS每日一题」,作者灰灰。转载本文请联系JS每日一题公众号。
创新互联,专注为中小企业提供官网建设、营销型网站制作、成都响应式网站建设公司、展示型成都网站设计、网站制作等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
先回顾两个命令的定义
再来看一次git的工作流程图,如下所示:
可以看到,git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决
在我们本地的git文件中对应也存储了git本地仓库分支的commit ID和 跟踪的远程分支的commit ID,对应文件如下:
使用 git fetch更新代码,本地的库中master的commitID不变
但是与git上面关联的那个orign/master的commit ID发生改变
这时候我们本地相当于存储了两个代码的版本号,我们还要通过merge去合并这两个不同的代码版本
也就是fetch的时候本地的master没有变化,但是与远程仓关联的那个版本号被更新了,接下来就是在本地merge合并这两个版本号的代码
相比之下,使用git pull就更加简单粗暴,会将本地的代码更新至远程仓库里面最新的代码版本,如下图:
一般远端仓库里有新的内容更新,当我们需要把新内容下载的时候,就使用到git pull或者git fetch命令
fetch
用法如下:
- git fetch <远程主机名> <远程分支名>:<本地分支名>
例如从远程的origin仓库的master分支下载代码到本地并新建一个temp分支
- git fetch origin master:temp
如果上述没有冒号,则表示将远程origin仓库的master分支拉取下来到本地当前分支
这里git fetch不会进行合并,执行后需要手动执行git merge合并,如下:
- git merge temp
pull
两者的用法十分相似,pull用法如下:
- git pull <远程主机名> <远程分支名>:<本地分支名>
例如将远程主机origin的master分支拉取过来,与本地的branchtest分支合并,命令如下:
- git pull origin master:branchtest
同样如果上述没有冒号,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并
相同点:
不同点:
参考文献
本文名称:说说对Gitpull和Gitfetch的理解?有什么区别?
分享链接:http://www.gawzjz.com/qtweb2/news31/22731.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联