`
frank1998819
  • 浏览: 757653 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

git fetch & pull详解(转)

 
阅读更多

https://www.cnblogs.com/runnerjack/p/9342362.html

1、简单概括

先用一张图来理一下git fetchgit pull的概念:

可以简单的概括为:

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

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

下面我们来详细了解一下git fetch 和git pull 的用法。 

2、分支的概念

在介绍两种方法之前,我们需要先了解一下分支的概念: 
分支是用来标记特定代码的提交,每一个分支通过SHA1sum值来标识,所以对分支的操作是轻量级的,你改变的仅仅是SHA1sum值。

如下图所示,当前有2个分支,A,C,E属于master分支,而A,B,D,F属于dev分支。

A----C----E(master)
 \
  B---D---F(dev)
  • 1
  • 2
  • 3

它们的head指针分别指向E和F,对上述做如下操作:

git checkout master  //选择or切换到master分支
git merge dev        //将dev分支合并到当前分支(master)中
  • 1
  • 2

合并完成后:

A---C---E---G(master)
 \         /
  B---D---F(dev)
  • 1
  • 2
  • 3

现在ABCDEFG属于master,G是一次合并后的结果,是将E和F的代码合并后的结果,可能会出现冲突。而ABDF依然属于dev分支。可以继续在dev的分支上进行开发:

A---C---E---G---H(master)
 \         /
  B---D---F---I(dev)
  • 1
  • 2
  • 3
  • 4

分支(branch)的基本操作:

git branch //查看本地所有分支 

git branch -r //查看远程所有分支

git branch -a //查看本地和远程的所有分支

git branch <branchname> //新建分支

git branch -d <branchname> //删除本地分支

git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
git push origin:<branchname>  //删除后推送至服务器

git branch -m <oldbranch> <newbranch> //重命名本地分支
/**
*重命名远程分支:
*1、删除远程待修改分支
*2、push本地新分支到远程服务器
*/

//git中一些选项解释:

-d
--delete:删除

-D
--delete --force的快捷键

-f
--force:强制

-m
--move:移动或重命名

-M
--move --force的快捷键

-r
--remote:远程

-a
--all:所有

 

3、git fetch 用法

git fetch 命令:

$ git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
  • 1

如果只想取回特定分支的更新,可以指定分支名:

$ git fetch <远程主机名> <分支名> //注意之间有空格
  • 1

最常见的命令如取回origin 主机的master 分支:

$ git fetch origin master
  • 1

取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:

$ git log -p FETCH_HEAD
  • 1

如图: 

可以看到返回的信息包括更新的文件名,更新的作者和时间,以及更新的代码(19行红色[删除]和绿色[新增]部分)。

我们可以通过这些信息来判断是否产生冲突,以确定是否将更新merge到当前分支。 

4、git pull 用法

前面提到,git pull 的过程可以理解为:

git fetch origin master //从远程主机的master分支拉取最新内容 
git merge FETCH_HEAD    //将拉取下来的最新内容合并到当前所在的分支中
  • 1
  • 2

即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:

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

如果远程分支是与当前分支合并,则冒号后面的部分可以省略:

$ git pull origin next
分享到:
评论

相关推荐

    git fetch与git pull的区别详解

    其中,`git fetch` 和 `git pull` 是两个经常被使用的命令,但它们在使用上有显著的区别。这篇文章将详细解析这两个命令的区别。 首先,`git fetch` 命令的作用是获取远程仓库的最新变化,但它不会自动合并到你的...

    Git fetch和pull的详解及区别

    在Git的日常操作中,`git fetch`和`git pull`是两个常用但又略有区别的命令,它们都涉及到从远程仓库获取更新,但处理这些更新的方式有所不同。 ### `git fetch` `git fetch`命令的主要作用是从远程仓库获取最新的...

    Git详解_Git详解

    `git fetch`和`git pull`用于从其他副本获取更新,`git push`则将本地更改共享出去。 了解和熟练使用Git是现代软件开发者的必备技能。通过实践和学习,你可以掌握Git的强大功能,提高团队协作效率,确保代码的安全...

    Git pull命令与fetch命令的区别

    ### Git pull命令与fetch命令的区别 #### 一、引言 在版本控制工具Git中,开发者经常需要从远程仓库获取最新的代码更新至本地仓库。这一过程中,`git pull` 和 `git fetch` 是两个最常用的命令。虽然它们都能实现...

    Git版本管理用法详解

    在推送和拉取更改的过程中,`git fetch`, `git merge` 和 `git pull` 等命令非常关键。 在线Web浏览指的是通过Web界面查看代码仓库的状态。Git本身是一个命令行工具,但在许多项目中,例如GitHub、GitLab和Bit...

    git原理详解及实用指南(好书).rar

    远程操作,如`git fetch`、`git pull`和`git push`,则用于与远程仓库同步。 Git的核心概念包括版本快照而非差异、分支的轻量级特性、以及分布式的工作模型。每个Git仓库都有自己的完整历史记录,这使得离线工作...

    Git 原理详解及实用指南.rar

    通过`git fetch`和`git merge`或`git rebase`,你可以获取并整合他人对项目的贡献。 为了更好地协同工作,你需要掌握`git pull request`或`merge request`的概念,这是向项目贡献代码的一种标准流程。开发者在自己...

    Git 原理详解及实用指南.zip

    - `git fetch` 获取远程仓库的最新信息,`git pull` 将远程分支拉取到本地并自动合并。 通过学习以上内容,无论是新手还是有经验的开发者,都能更好地理解和掌握Git的基本操作和高级技巧,提升项目管理效率。在...

    git命令及基础概念详解

    - **`git fetch`**:仅从远程仓库获取数据但不合并到本地; - **`git rebase`**:用于将一个分支上的提交应用到另一个分支上; - **`git tag`**:用于为特定提交创建标签; - **`git blame`**:查看每个文件行的最后...

    git命令详解

    远程仓库可以使用`git fetch`和`git pull`命令来获取和同步远程仓库的最新变更。 Git的高级特性还包括了重置(reset)和变基(rebase)操作,它们允许开发者改变历史提交的顺序,以更清晰、线性的历史记录。但是,...

    《ProGit》——Git使用和原理讲解

    - **远程操作**:`git push`, `git pull`, `git fetch` 3. Git核心原理: - **SHA哈希**:Git使用SHA-1哈希算法为每次提交生成唯一的标识符,确保版本的唯一性和可追溯性。 - **对象数据库**:Git将文件内容和元...

    git 应用大全

    ### Git应用大全:详解Git命令与流程 #### 概述 `Git`作为一款分布式版本控制系统,被广泛应用于软件开发项目之中。它不仅能够高效管理项目的历史版本,还能支持多人协作,提高团队的工作效率。本文将围绕“Git...

    Git的一些简单使用操作

    Git 基础知识点详解 本文将详细介绍 Git 的基础知识点,包括 Git 的基本概念、基本操作、版本控制、分支管理、远程库管理等。 Git 基本概念 Git 是一个分布式版本控制系统,允许开发者在本地对项目进行版本控制。...

    代码工具git的使用

    - **git fetch --all**:从远程仓库获取最新的数据,但不合并到本地分支。 - **git reset --hard origin/master**:将本地分支重置为远程仓库的master分支状态。 - **git stash**:临时保存尚未提交的更改。 - **git...

    详解git merge 与 git rebase的区别

    如果你想要使用 `git rebase` 来更新本地分支,可以使用 `git pull --rebase` 或者先 `git fetch` 再 `git rebase origin/branch`。 总的来说,了解 `git merge` 和 `git rebase` 的差异有助于更好地管理项目,选择...

    详解git submodule HEAD detached 的问题

    3. **手动调整**:你也可以选择手动切换到子仓库的正确分支,然后使用`git pull`或`git fetch`获取最新的提交。 ```bash cd git checkout git pull origin cd .. ``` 4. **定期更新父仓库**:为了避免...

    git使用规范

    ### Git使用规范详解 在软件开发领域,Git作为版本控制系统的重要性不言而喻。它不仅提供了强大的代码管理功能,还能促进团队协作,提高开发效率。本文将深入解析Git的使用规范,涵盖工作流程、基本操作命令及其...

    Git教程 从入门到精通

    ### Git教程从入门到精通——知识点详解 #### 一、Git简介 - **Git是什么**:Git是一款目前世界上最先进的分布式版本控制系统。它被设计用于高效处理从小型到大型项目的版本控制,尤其适合软件开发项目。 - **Git...

    《Git版本控制管理(第2版)》

    ### Git版本控制管理(第2版)核心知识点详解 #### 一、Git简介与特性 - **起源与发展**:Git最初是由Linux内核的主要开发者Linus Torvalds于2005年创建,目的是为了更好地管理和跟踪Linux内核源代码的变化。随着...

Global site tag (gtag.js) - Google Analytics