git fetch 与 git pull 区别

目录

当远程主机版本库与本地版本库不一致时,可以使用git fetch将远程的更新取回到本地。
git fetch会取回所有分支更新,也可更新指定分支,如:

1
2
git fetch <远程主机名> <分支名>
git fetch origin develop

上面是取回远程develop分支。

其中 使用git remote可查看远程主机。

而git pull是取回远程分支再与本地分支合并。

1
2
$ git pull <远程主机名> <远程分支名>[:<本地分支名>]
$ git pull origin develop:branch1

上面是取回远程分支develop并且与本地branch1分支合并,若与当前分支合并则本地分支名部分可省略,如:

1
2
# 当前分支为branch1,则下面的写法和上面命令效果相同
$ git pull origin develop

git pull相当于是先git fetch再git merge,如:

1
2
$ git fetch origin
$ git merge origin/develop

若本地远程有单一追踪关系,还可省写为:

1
$ git pull

简单的说 git fetch仅将远程仓库的更新取回到本地仓库,不影响当前代码,而git pull除了取回外还会与workspace代码合并,影响当前代码。

git