当前位置: 首页 > 科技观察

说说你对Gitpull和Gitfetch的理解?有什么不同?

时间:2023-03-19 21:24:15 科技观察

本文转载自微信公众号《JS日报》,作者慧慧。转载本文请联系JS每日一问公众号.1.首先回顾一下这两个命令的定义是什么?gitfetch命令用于从另一个存储库下载对象和引用。gitpull命令用于从另一个仓库或本地分支获取并集成(integrate)。我们再看看git的工作。流程图如下:可以看到,gitfetch是将远程主机的最新内容拉取到本地。用户检查后决定是否合并到工作的本地分支,而gitpull是拉取远程主机的最新内容。down后直接merge,即:gitpull=gitfetch+gitmerge,可能会产生冲突,需要手动解决。在我们本地的git文件中,还存储了git本地仓库分支的commitID和被跟踪的远程分支的commit。ID,对应文件如下:.git/refs/head/[localbranch].git/refs/remotes/[trackingbranch]使用gitfetch更新代码,本地库master的commitID不变但是随着git的orign/master的commitID发生变化。这个时候我们在本地存储两个代码的版本号。我们需要通过merge将两个不同的代码版本合并,即本地master在fetch的时候不发生变化。但是远程仓库关联的版本号已经更新了,下一步就是在本地merge中合并两个版本号的代码。相比之下,使用gitpull更加简单粗暴,将本地代码更新到远程仓库。最新的代码版本,如下图所示:2.使用方法一般是远程仓库有新的内容更新。当我们需要下载新内容时,我们使用gitpull或gitfetch命令。fetch用法如下:gitfetch<远程主机名><远程分支名>:<本地分支名>比如将远程源站master分支的代码下载到本地,新建临时分支gitfetchoriginmaster:temp如果上面没有冒号,表示拉下远程源仓库的master分支,到gitfetch不会merge的本地current分支。执行后需要手动执行gitmergemerge,如下:gitmergetempull两者的用法很相似,pull的用法如下:gitpull<远程主机名><远程分支名>:<本地分支名>例如将是远程主机拉取机器origin的master分支,并与本地branchtest分支合并。命令如下:gitpulloriginmaster:branchtest如果上面没有冒号,则表示拉取远程源仓库的master分支,并与本地当前分支合并。3.区别相同:在功能上,它们的功能大致相同,都是起到更新代码的作用。区别:gitpull相当于从远程仓库获取最新版本,然后与本地分支合并,即gitpull=gitfetch+git与merge相比,gitfetch更安全,更符合实际需求.合并前,我们可以查看更新状态,根据实际情况决定是否合并引用https://zhuanlan.zhihu.com/p/123370920https://segmentfault.com/a/1190000017030384https://juejin。cn/post/6844903921794859021