Git fetch和git pull的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git fetch和git pull的区别相关的知识,希望对你有一定的参考价值。

Git fetch和git pull区别为:远端跟踪分支不同、拉取不同、commitID不同。

一、远端跟踪分支不同

1、Git fetch:Git fetch能够直接更改远端跟踪分支。

2、git pull:git pull无法直接对远程跟踪分支操作,我们必须先切回本地分支然后创建一个新的commit提交。

二、拉取不同

1、Git fetch:Git fetch会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作。

2、git pull:git pull是从远程获取最新版本并merge到本地,会自动合并或修改当前的工作。

三、commitID不同

1、Git fetch:使用Git fetch更新代码,本地的库中master的commitID不变,还是等于1。

2、git pull:使用git pull更新代码,本地的库中master的commitID发生改变,变成了2。

参考技术A Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp
git merge tmp

从远程获取最新的版本到本地的test分支上
之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
结束本回答被提问者和网友采纳
参考技术B Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp
git merge tmp
从远程获取最新的版本到本地的test分支上
之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
参考技术C fetch:相当于是从远程获取最新版本到本地,不会自动merge
pull:相当于是从远程获取最新版本并merge到本地
参考技术D

git fetch [remote]: 下载远程仓库的所有变动

git pull [remote] [branch]: 取回远程仓库的变化,并与本地分支合并

更多的git命名可以查看:Git教程(10)- Git基本常用命令,开发中常用的命令都整理和讲解了。

Git 代码更新:git fetch 和 git pull 的区别

Git 从远程的分支获取最新的版本到本地有这样 2 个命令: 

1. git fetch:相当于是从远程获取最新版本到本地,但不会自动 merge 

git fetch origin master 
git log -p master origin/master 
git merge origin/master

以上命令的含义:

首先从远程的 origin 的 master 主分支下载最新的版本到 origin/master 分支上

然后比较本地的 master 分支和 origin/master 分支的差别

最后进行合并

上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp 
git merge tmp

从远程获取最新的版本到本地的 tmp 分支上,之后再进行 比较、合并

2. git pull:相当于是从远程获取最新版本并 merge 到本地 

git pull origin master

上述命令其实相当于 git fetch + git merge

在实际使用中,git fetch 更安全一些,因为在 merge 前,我们可以查看更新情况,然后再决定是否合并。

 

为了更好的理解,画了个图:

技术分享 

以上是关于Git fetch和git pull的区别的主要内容,如果未能解决你的问题,请参考以下文章

Git fetch和git pull的区别

Git fetch和git pull的区别

GIT:fork和clone的区别,fetch与pull的区别

Git fetch和git pull的区别

Git fetch和git pull的区别

git pull 和 git fetch的区别?