git pullgit 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更新代码,本地的库中mastercommitID不变,可是与git上面相关的那个orign/mastercommit ID发生改变。这时分咱们本地相当于存储了两个代码的版别号,咱们还要经过merge去兼并这两个不同的代码版别。也便是fetch的时分本地的master没有变化,可是与长途仓相关的那个版别号被更新了,接下来便是在本地merge兼并这两个版别号的代码。

运用git pull就会直接将本地的代码更新至长途库房里面最新的代码版别。

用法

git fetch

git fetch用法如下:

git fetch <长途主机名> <长途分支名>:<本地分支名>

例如从长途的origin库房的master分支下载代码到本地并新建一个temp分支

git fetch origin master:temp

git pull

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

git pull <长途主机名> <长途分支名>:<本地分支名>

例如将长途主机originmaster分支拉取过来,与本地的branchtest分支兼并,指令如下:

git pull origin master:branchtest

相同如果上述没有冒号,则表示将长途origin库房的master分支拉取下来与本地当时分支兼并。

差异

相同点:

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

不同点:

  • **git pull是相当于从长途库房获取最新版别,然后再与本地分支merge,**即git pull = git fetch + git merge
  • git fetch安全,在merge前,咱们可以查看更新情况,根据实际情况再决议是否兼并。