git fetch和git pull区别详解
git fetch 相当于从远程获取最新版本到本地,不会自动merge处理
第一部分:git fetch
通过git fetch –help查看官方描述为:
git fetch是远程仓库下载objects和refs,默认远程仓库名称为origin,git fetch origin master理解为从远程origin仓库下载master分支内容到本地的remotes/origin/master分支。ref名称和object名称临时保存在.git/FETCH_HEAD文件里边。
处理命令为:
git fetch origin master git branch -av git log -p master.. origin/master # 比较master分支和origin/master分支差异 git merge origin/master # 将origin/master分支内容合并到本地master分支
理解过程为:
- 从远程origin的master分支上下载最新的版本到origin/master分支上
- 比较本地的master分支和origin/master分支的区别
- 最后进行合并处理
等效于:
git fetch origin master:tmp # 从远程origin下载master分支内容到本地tmp分支 git diff tmp # 比较当前master分支和tmp分支差异 git merge tmp # 将tmp分支内容合并到master分支 git branch -av # 查看当前版本库全部分支情况 git branch -d tmp # 删除掉临时tmp本地分支
第二部分:git pull
git pull 相当于是从远程获取最新版本并merge到本地
git pull origin master
理解过程为:
git pull = git fetch + git merge两个过程,在实际使用过程中,git fetch更安全,因为在merge之前,我们可以查看更新情况,决定是否合并。