git pull 与 git fetch 的区别

目录

概述

引用网上的一张图来说明


对比

git fetch

1.git fetch
这将更新git remote 中所有的远程repo 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中。

2.git fetch remote_repo
这将更新名称为remote_repo 的远程repo上的所有branch的最新commit-id,将其记录。

3.git fetch remote_repo remote_branch_name
这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name。

4.git fetch remote_repo remote_branch_name:local_branch_name
这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name ,并在本地创建local_branch_name 本地分支保存远端分支的所有数据。

FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。每一个执行过fetch操作的项目都会存在一个FETCH_HEAD列表,其中每一行对应于远程服务器的一个分支。当前分支指向的FETCH_HEAD,就是这个文件第一行对应的那个分支.

git pull

执行步骤:
1.基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号。
2.git fetch 获得当前指向的远程分支的后续版本的数据。
3.利用git merge将其与本地的当前分支合并。