两者之间有什么区别?git pullgit fetch?


当前回答

初学者的简单图形化代表,

enter image description here

在这里,

git pull  

将会从仓库获取代码 并重新基础与您的本地... 在git拉动中,有 可能性创造新的承诺。

但是在,

git 获取 git 获取

将会从存储库获取代码, 我们需要通过使用git rebase

eg: 我要从服务器主机取回它, 并在本地主机重标 。

1) git pull( 重基将自动完成) :

git pull origin master

在这里来源来源是你的远程回寄师父您的分支

2) git 获取( 需要手动重标) :

git fetch origin master

它会从源代码中获取服务器更改。 它会位于本地, 直到您自己重新定位它。 我们需要通过检查代码手动来修正冲突 。

git rebase origin/master

这将会将代码重设为本地代码。 在确保您在正确的分支之前。

其他回答

git 拉

它使用单一命令执行两个函数。

它会获取对远程分支的所有修改, 然后将这些修改合并到您的本地分支中。 您也可以通过 -- rebase 来修改拉动行为。 合并和重基准的区别可以读取在这里

git 获取 git 获取

Git 抓取仅能完成 Git pull 的一半工作。 它只是将远程更改带入您的本地回购, 但没有将其应用到分支中 。 您必须明确应用这些更改 。 这可以做如下操作 :

git fetch
git rebase origin/master

Git允许在较新的承诺之后适用按时间顺序排列的旧承诺。 因此,存放库之间转移承诺的行为分为两步:

  1. 正在从远程分支复制新承诺, 复制本地副本中的此远程分支 。

    (收回业务)master@remote >> remote/origin/master@local

  2. 整合对地方分支机构的新承诺

    (内购外业务)remote/origin/master@local >> master@local

第二步有两种方法,你可以:

  1. 在上一个共同祖先之后,将本地分支叉到叉口,并添加与本地仓库独特的承诺平行的新承诺,通过合并承诺最终完成,关闭叉口。
  2. 在上一个共同祖先后插入新承诺,并重新应用本地仓库独有的承诺。

git术语术语,第1步是git fetch,第2步是git mergegit rebase

git pullgit fetchgit merge

所有分支都存放在.git/refs

所有地方分支机构都存放在.git/refs/heads

所有远程分支都存放在.git/refs/remotes

缩略git fetch命令下载 承诺, 文件, 和 refs 从远程仓库下载到您的本地 repo 。 抓取是您想要看到其他人正在做的工作时要做的事情 。

所以当你做git fetch全部文件、 承诺和 refs 都下载在

此目录.git/refs/remotes

您可以切换到这些分支以查看变化 。

另外,如果你愿意,你可以把它们合并起来。

git pull只需下载这些更改, 并将其合并到当前分支 。

示例示例示例示例

如果您想看远程分支的工作dev/jd/feature/auth,你只需要做

git fetch origin dev/jd/feature/auth

看到变化或工作进展做,

git checkout dev/jd/feature/auth

但如果您也想要获取它们并将其合并到当前分支,

git pull origin dev/jd/feature/auth

如果有的话git fetch origin branch_name,它将获取分支,现在您可以切换到您想要的分支,并看到变化。您的本地主子或其他本地分支不会受到影响。但您不会受到影响。git pull origin branch_name将获取分支, 并合并到当前分支 。

更简短

git fetch获取更新但不将其合并 。

git pull是否为 a 的git fetch兜帽下,然后一个merge.

简简

git fetch类似pull但它不合并。 也就是说, 它会获取远程更新( NAME OF TRANSLATORS) 。refsobjects)但您的居住地保持不变(即:origin/master得到更新,但master保留原样) 。 。

git pull从一个远程的并瞬间合并中拉下来。

更多

git clone克隆回购 。

git rebase将不属于上游分支的当前分支保存到临时区域。 您的分支现在和您开始更改前一样。 所以,git pull -rebase将拉下远程修改, 倒转您的本地分支, 重放您的变化 在您当前分支的顶部 一个一个一个地重放 直到您更新。

还有git branch -a将显示你们所有分支—— 本地和远程分支—— 究竟发生了什么。

这个博客文章很有用:

Git 拉拉、 Git 抓取和 Git 克隆( 和 Git 重新基底) - Mike Pearce 的区别

和涵盖范围git pull, git fetch, git clonegit rebase.

最新更新

我想我应该更新这个 来显示你是如何实际使用这个的。

  1. 从远程更新您的本地副本( 但不要合并) :

     git fetch 
    
  2. 下载更新后,

     git diff master origin/master 
    
  3. 如果你对最新消息满意的话, 合并一下:

     git pull
    

注:

第2步:更多关于本地和远程之间差异的信息,见:如何比较本地 Git 分支与其远程分支的比较

第三步:也许更准确(例如,在快速变化的回购上)git rebase origin此处。 见@ Justin Ohms 评论在另一个答案中。

另见:http://longair.net/blog/2009/04/16/git-fetch-and-merge/

注:我还提到mergea 期间pull然而,您仍然可以配置pull使用rebase取而代之。

enter image description here

这种互动图形表达方式非常有助于降低基点:http://ndpsoftware.com/git-cheatsheet.html

git fetch仅“ 下载” 从远程到本地仓库的更改 。git pull下载修改并将其合并到当前分支中。“在默认模式中,git pull简称为git fetch和继 继 继 继 继 继git merge FETCH_HEAD."