Skip to content

git pull 和 git fetch

定义

  • git fetch 命令用于从另一个存储库下载对象和引用
  • git pull 命令用于从另一个存储库或本地分支获取并集成(整合)

git fetch 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中

而 git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决

用法

fetch

用法如下:

git
git fetch <远程主机名> <远程分支名>:<本地分支名>

例如从远程的 origin 仓库的 master 分支下载代码到本地并新建一个 temp 分支

git
git fetch origin master:temp

如果上述没有冒号,则表示将远程 origin 仓库的 master 分支拉取下来到本地当前分支

这里 git fetch 不会进行合并,执行后需要手动执行 git merge 合并,如下:

git
git merge temp

pull

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

git
git pull <远程主机名> <远程分支名>:<本地分支名>

例如将远程主机 origin 的 master 分支拉取过来,与本地的 branchtest 分支合并,命令如下:

git
git pull origin master:branchtest

同样如果上述没有冒号,则表示将远程 origin 仓库的 master 分支拉取下来与本地当前分支合并

区别

相同点:

  • 在作用上他们的功能是大致相同的,都是起到了更新代码的作用

不同点:

  • git pull 是相当于从远程仓库获取最新版本,然后再与本地分支 merge,即 git pull = git fetch + git merge
  • 相比起来,git fetch 更安全也更符合实际要求,在 merge 前,我们可以查看更新情况,根据实际情况再决定是否合并