Git fetch和git pull的区别

作者&投稿:壤融 (若有异议请与网页底部的电邮联系)
git中fetch和pull的区别~

  要讲清楚git fetch,git pull的区别必须要附加讲清楚git remote,git merge 、远程repo, branch 、 commit-id 以及 FETCH_HEAD。
  1. 【git remote】首先, git是一个分布式的结构,这意味着本地和远程是一个相对的名称。
  本地的repo仓库要与远程的repo配合完成版本对应必须要有 git remote子命令,通过git remote add来添加当前本地长度的远程repo, 有了这个动作本地的repo就知道了当遇到git push 的时候应该往哪里提交代码。
  2. 【git branch】其次,git天生就是为了多版本分支管理而创造的,因此分支一说,不得不提, 分支就相当于是为了单独记录软件的某一个发布版本而存在的,既然git是分布式的,便有了本地分支和远程分支一说,git branch 可以查看本地分支, git branch -r 可以用来查看远程分支。 本地分支和远程分支在git push 的时候可以随意指定,交错对应,只要不出现版本从图即可。
  3. 【git merge】再者,git的分布式结构也非常适合多人合作开发不同的功能模块,此时如果每个人都在其各自的分支上开发一个相对独立的模块的话,在每次release制作时都需先将各成员的模块做一个合并操作,用于合并各成员的工作成果,完成集成。 此时需要的就是git merge.
  4.【git push 和 commit-id】在每次本地工作完成后,都会做一个git commit 操作来保存当前工作到本地的repo, 此时会产生一个commit-id,这是一个能唯一标识一个版本的序列号。 在使用git push后,这个序列号还会同步到远程repo。
  在理解了以上git要素之后,分析git fetch 和 git pull 就不再困难了。

  首先,git fetch 有四种基本用法
  1. git fetch →→ 这将更新git remote 中所有的远程repo 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
  2. git fetch remote_repo →→ 这将更新名称为remote_repo 的远程repo上的所有branch的最新commit-id,将其记录。
  3. git fetch remote_repo remote_branch_name →→ 这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name
  4. git fetch remote_repo remote_branch_name:local_branch_name →→ 这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name ,并在本地创建local_branch_name 本地分支保存远端分支的所有数据。

  FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。

  git pull 的运行过程:
  git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。
  

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前,我们可以查看更新情况,然后再决定是否合并

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。



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前,我们可以查看更新情况,然后再决定是否合并
结束

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前,我们可以查看更新情况,然后再决定是否合并

fetch:相当于是从远程获取最新版本到本地,不会自动merge
pull:相当于是从远程获取最新版本并merge到本地

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

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

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




临城县15899669145: Git fetch和git pull的区别 -
亥刮帮凝: gitfetch:相当于是从远程获取最新版本到本地.gitpull:命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并.gitfetch获取最新版本后,会覆盖本地计算机的版本,旧版本的信息会被删除.gitpull从远程主机获得更新信息后,与本地信息合并,旧版本的信息不会被删除.这是两个计算机网络程序命令:git:在这里指“服务器”.fetch:在这里是"获取;取数据;读取"的意思.pull:在这里是“下拉”的意思.

临城县15899669145: git fetch和git pull之间的区别 -
亥刮帮凝: git fetch :将从远程git仓库获取最新版本到本地,不会自动merge git pull :将从远程git仓库获取最新版本并merge到本地 git merge 是指将一个分支或者某个commit的修改合并指定(本地

临城县15899669145: git pull和git fetch有什么区别 -
亥刮帮凝: 1. git fetch:相当于是从远程获取最新版本到本地,不会自动mergeGit fetch origin mastergit log -p master..origin/mastergit merge origin/master 以上命令的含义: 首先从远程的origin的master主分支下载最新的版本到origin/master分支上 然后比较...

临城县15899669145: Git fetch和git pull的区别 -
亥刮帮凝: git中都fetch命令是将远程分支的最新内容拉到了本地,但是fetch后是看不到变化的,在tortoiseGit中使用switch/checkout查看当前分支,发现此时后本地多了一个FETCH_HEAD的指针,checkout到该指针后可以查看远程分支的最新内容.然后...

临城县15899669145: git fetch和pull的区别 -
亥刮帮凝: git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin master git log -p master..origin/master git merge origin/master

临城县15899669145: Git fetch和git pull的区别 -
亥刮帮凝: Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin master git log -p master..origin/master...

临城县15899669145: git fetch和push的区别 -
亥刮帮凝: git fetch 和git pull 都会把代码从远程库更新到本地,区别是git fetch不会自动merge,git pull 会自动merge.

临城县15899669145: git,git bash和git shell有什么区别 -
亥刮帮凝: git是一种配置管理(软件变更,集成,发布)工具,linuxkernel,android的代码就是用git管理的(不是简单地存放在硬盘上).shell是linux/unix系统的外壳,也可以理解为命令行借口,就是你输入并执行命令行的地方bash是shell的一种,最常用的shell之一.你在你的linux上运行:ps|grep$$如果运行结果为bash,就说明当前默认shell是bashgit有命令行的方式去使用它,也有图形界面的方式使用它(gitk).l命令行方式就叫他gitshell.

临城县15899669145: failed to push some refs 怎么办,Git fetch和git pull的区别 -
亥刮帮凝: Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin master git log -p master..origin/master git merge origin/master 以上命令的含义

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网