Git fetch和pull的详解及区别

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • github pull最新代码实现方法

    github现在已经经常用了,但是经常遇到下面的问题 比如:从一个项目A中fork了一个分支B,并且在分支B有了改动.过了几天后,项目A中的代码应该会有很多人提交修改了,现在想将最新的代码pull到分支B.请问如何做呢?在github界面上没有看到响应的按钮 解决步骤:   假设你fork的项目原始地址是urlRep, 你自己的是urlYou $ git remote  add upstream urlRep # 你本地的origin应该跟自己的remote,并且当前本地branch是maste

  • Git pull命令与fetch命令的区别

    Git pull命令与fetch命令的区别 今天在公司碰到个问题,公司不使用master分支作为主分支,而使用release分支作为主分支,这就碰到了个问题,也就是当clone一个项目下来的时候,如果master跟release分支有冲突,就不能pull了,自己还要解决冲突. 刚下一个项目,也不懂冲突到底怎么回事,也就很难搞了. 这个时候,就不得不提Git的两个命令,git fetch和git pull Git中从远程的分支获取最新的版本到本地有这样2个命令: Git fetch git fet

  • 详解git无法pull仓库refusing to merge unrelated histories

    详解git无法pull仓库refusing to merge unrelated histories 本文讲的是把Git在最新2.9.2,合并pull两个不同的项目,出现的问题如何去解决 fatal: refusing to merge unrelated histories 我在Github新建一个仓库,写了License,然后把本地一个写了很久仓库上传. 先pull,因为两个仓库不同,发现refusing to merge unrelated histories,无法pull 因为他们是两个

  • Git fetch和pull的详解及区别

    git fetch和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/mas

  • 45个GIT经典操作场景使用详解

    目录 正文 我刚才提交了什么? 我的提交信息(commit message)写错了 我提交(commit)里的用户名和邮箱不对 我想从一个提交(commit)里移除一个文件 我想删除我的的最后一次提交(commit) 删除任意提交(commit) 我尝试推一个修正后的提交(amended commit)到远程,但是报错: 我意外的做了一次硬重置(hard reset),我想找回我的内容 暂存(Staging) 我需要把暂存的内容添加到上一次的提交(commit) 我想要暂存一个新文件的一部分,而

  • Windows 版本Git命令行的使用详解

    Git的使用基本教程 git安装 官网 msysgit.github.io(百度搜索git下载地址也行)下载 git安装(路径选择你的路径或者默认也行) 步骤中:出现选项注意选择Use git from git bash only(其他默认一路下一步就行了) 最后配置环境变量(目的就是在CDM窗口任意目录都可以执行git命令行) path:D:\Asoftware\java\Git\bin 详情请参考:https://www.jb51.net/article/191327.htm git配置账户

  • git stash的正确用法详解

    目录 概述 git stash 具体用法 概述 前段时间突然发现,我之前对git stash的使用都是错误的. 具体说来,我是这么使用的:在远端有新的提交,需要git pull来拉取合并时,发现本地有一些未提交的修改,功能也没实现,不适合做一次commit.这时候我执行git stash隐藏本地的修改,然后执行git pull来拉取远端的更新,在最新代码基础上重新实现stash的那些代码中的功能. 这里的问题是,重新实现stash代码中的那一步,其实完全可以用git stash pop来替代,执

  • git中ssh key配置详解

    git clone支持https和git(即ssh)两种方式下载源码: 当使用git方式下载时,如果没有配置过ssh key,则会有如下错误提示: 下面就介绍一下如何配置git的ssh key,以便我们可以用git方式下载源码. 首先用如下命令(如未特别说明,所有命令均默认在Git Bash工具下执行)检查一下用户名和邮箱是否配置(github支持我们用用户名或邮箱登录): git config --global --list 笔者的机器显示信息如下(已配置): 如未配置,则执行以下命令进行配置

  • Pycharm操作Git及GitHub的步骤详解

    项目开发中,代码管理肯定离不开git操作,Pycharm中没有复杂的命令操作,只需要进行一些简单的菜单操作就可以方便的实现版本管理,下面分别介绍下载pycharm中git的简单操作,以及在Pycharm中进行github项目的下载和上传. Pycharm操作Git 1.pycharm配置git Windows: Mac: 完成配置后,点击Test可以看到本地的git版本信息. 2.git项目clone到本地 按照如下路径,输入git仓库地址以及本地项目目录,点击clone 在弹出的密码框中输入g

  • MySQL exists 和in 详解及区别

    MySQL exists 和in 详解及区别 有一个查询如下: SELECT c.CustomerId, CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID = cu.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊

  • 内存溢出和内存泄漏的详解及区别

    内存溢出和内存泄漏的详解及区别 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出. 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光. memory leak会最终会导致out of memory! 内存溢出就是你要求分配的内存超出了系统能

  • java中synchronized(同步代码块和同步方法)详解及区别

     java中synchronized(同步代码块和同步方法)详解及区别 问题的由来: 看到这样一个面试题: //下列两个方法有什么区别 public synchronized void method1(){} public void method2(){ synchronized (obj){} } synchronized用于解决同步问题,当有多条线程同时访问共享数据时,如果进行同步,就会发生错误,Java提供的解决方案是:只要将操作共享数据的语句在某一时段让一个线程执行完,在执行过程中,其他

  • C# 中 Array和 ArrayList详解及区别

    C# 中 Array和 ArrayList详解及区别 一.Array 的用法 type[] typename=new type[size]; 或者 type[] typename=new type[]{ }; Array类型的变量在声明的同时必须进行实例化(如果初始化至少得初始化数组的大小) 平常我们int[],string[]...事实上就是声明一个array数组了 如: string [] srt=new string[]{"a","b"}; int[] a=n

随机推荐