前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git pull 与 git fetch 的区别

git pull 与 git fetch 的区别

作者头像
薛定喵君
发布2020-12-28 11:48:22
2.2K0
发布2020-12-28 11:48:22
举报
文章被收录于专栏:薛定喵君薛定喵君

再探git基本操作(pull与fetch)的区别

今天恰逢一个实习生不清楚在使用git发生冲突时如何去处理,所以就给他说了git在工作上的一般使用以及拉取与获取的区别,然后自己也温习了一下。

平时使用git都是基于图形化界面 SourceTree 的,很方便。界面上有两个按钮:

  • git pull:拉取。即从远程仓库拉取最新版本文件到本地,自动合并/merge。
  • git fetch:抓取,获取。即从远程获取最新版本文件到本地,不自动合并/merge。

下面来了解两个概念:

  • FETCH_HEAD:版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本
  • commit-id:每次本地工作完成后,都会做一个git commit 操作来保存当前工作到本地的repo, 此时会产生一个commit-id,这是一个能唯一标识一个版本的sha1 hash值。

接着我们可以到自己本地的git仓库目录去看看: 随便打开一个仓库然后在命令行中执行命令ls -a查看所有文件。 我们会发现一个叫『.git』的隐藏文件夹,cd 进入这个文件夹,执行ls命令然后会发现一个名为『FETCH_HEAD』的文件,就是上面提到的版本链接,

接着我们可以cat一下文件名查看他的内容。

记录的是一段hash,指向远程仓库一个版本。 然后同级还有一个refs文件夹,里面包含三个文件夹:heads、remotes、tags。 heads 和 remotes 分别记录的就是本地和远程不同仓库的最新 commit id

接下来我们可以直接在代码托管平台对仓库进行修改并提交: 本地测试仓库使用的master分支 1.这里我们测试选用coding平台,先看看历史记录

2.本地查看 commit-id

  • 进入 .git/refs/remotes/origin目录,查看master可以看到远程仓库id值:c4b84ea
  • 进入 .git/refs/heads目录,查看master可以看到本地仓库id值:c4b84ea

3.接着在coding的web端修改readme文件并提交,再次查看项目提交历史

4.本地仓库执行git fetch并查看 commit-id

  • 进入 .git/refs/remotes/origin目录,查看master可以看到新的远程仓库id值:f8dfd95
  • 进入 .git/refs/heads目录,查看master可以看到旧的本地仓库id值:c4b84ea

这里我们知道:执行git fetch时会把远程仓库的最新commit-id同步到了本地。 然后查看README文件发现并没有与web端修改的同步。

5.本地仓库执行git pull并查看 commit-id

  • 进入 .git/refs/remotes/origin目录,查看master可以看到新的远程仓库id值:f8dfd95
  • 进入 .git/refs/heads目录,查看master可以看到新的本地仓库id值:f8dfd95

发现 commit-id 都更新了,然后README文件也是最新内容。

这里我们对拉取与获取的理解就更深刻一些了吧(?)。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
代码托管
CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档