精华内容
下载资源
问答
  • 详解git fetch与git pull的区别

    万次阅读 多人点赞 2017-07-11 00:31:15
    git fetch和git pull都可以将远端仓库更新至本地那么他们之间有什么区别呢?想要弄清楚这个问题有有几个概念不得不提。FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支...

    git fetch和git pull都可以将远端仓库更新至本地那么他们之间有何区别?想要弄清楚这个问题有有几个概念不得不提。

    FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
    commit-id:在每次本地工作完成后,都会做一个git commit 操作来保存当前工作到本地的repo, 此时会产生一个commit-id,这是一个能唯一标识一个版本的序列号。 在使用git push后,这个序列号还会同步到远程仓库。

    有了以上的概念再来说说git fetch
    git fetch:这将更新git remote 中所有的远程仓库所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
    git fetch更新远程仓库的方式如下:

    git fetch origin master:tmp 
    //在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
    git diff tmp 
    //来比较本地代码与刚刚从远程下载下来的代码的区别
    git merge tmp
    //合并temp分支到本地的master分支
    git branch -d temp
    //如果不想保留temp分支 可以用这步删除
    

    (1)如果直接使用git fetch,则步骤如下:

    • 创建并更新本 地远程分支。即创建并更新origin/xxx 分支,拉取代码到origin/xxx分支上。
    • 在FETCH_HEAD中设定当前分支-origin/当前分支对应,如直接到时候git merge就可以将origin/abc合并到abc分支上。

    (2)git fetch origin
    只是手动指定了要fetch的remote。在不指定分支时通常默认为master
    (3)git fetch origin dev
    指定远程remote和FETCH_HEAD,并且只拉取该分支的提交。

    git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。所以可以认为git pull是git fetch和git merge两个步骤的结合
    git pull的用法如下:

    git pull <远程主机名> <远程分支名>:<本地分支名>
    //取回远程主机某个分支的更新,再与本地的指定分支合并。
    

    因此,git fetch是从远程获取最新版本到本地,但不会自动merge
    而git pull则是会获取所有远程索引并合并到本地分支中来。效果相同时git pull将更为快捷。

    展开全文
  • Git fetch和git pull的区别

    万次阅读 多人点赞 2012-06-14 20:56:10
    原文:http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令:1.git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin mastergit log -p ...

    原文: http://www.tech126.com/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

        从远程获取最新的版本到本地的test分支上
       之后再进行比较合并
    2. git pull:相当于是从远程获取最新版本并merge到本地

     

    git pull origin master

    上述命令其实相当于git fetch 和 git merge
    在实际使用中,git fetch更安全一些
    因为在merge前,我们可以查看更新情况,然后再决定是否合并。

    展开全文
  • git pull

    千次阅读 2019-05-24 17:57:42
    git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并, 我的总结:得到最新的代码。 git pull <远程主机名> <远程分支名>:<本地分支名> git push <远程主机名> <...

    pull的是什么 ??是别人的最新的,还是你push上去的 那个 ??

    git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并,

    我的总结:得到最新的代码。

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

    git push <远程主机名> <本地分支名>:<远程分支名>

    git pull regular_v2 regular

    张贺原版:
    git reset e296520bbd93cd7c3e5eb9be3459c93523be6b09 --hard

    git pull origin regular_v2

    git 看哪里修改过
    git status
    git diff
    创建:git branch regular
    切换; git checkout regular

    git stash //保存
    git pull origin regular_v2 下来后
    git stash pop //在本地合并

    <<<<<<< Updated upstream

    eRetCode dialCallXferLableViking(tXuiWidgetVal * val){
    return_val_if_fail(val, RET_PARAM_NULL);
    @@ -1837,33 +1838,49 @@ eRetCode dialCallXferLableViking(tXuiWidgetVal * val){
    return RET_OK;
    }

    +=======
    +//改变第2行的显示的字符^M
    +>>>>>>> Stashed changes

    创建一个分支,并切换到新的分支上。
    git branch //切换到分支上
    git branch regular //创建分支

    git checkout 和git diff 的区别 ??

    git diff(查看的是工作目录和暂存区快照的区别)

    在master分支上,做一次提交c1,然后现在新建一个分支a,并切换到a分支。

    这个操作主要会用到两个命令:

    创建新分支:git branch branchName

    切换到新分支:git checkout branchName

    展开全文
  • git pullgit pull --rebase 区别理解

    千次阅读 2020-07-29 23:44:34
    git pull = git fetch + git merge git pull --rebase = git fetch + git rebase git pull 就不多说了,直接来看 git pull --rebase 吧。 现在,用户 A,用户 B 和 远程仓库的代码版本都是最新且保持一致的。 ...
    [root@master GitTest]# git pull
    warning: Pulling without specifying how to reconcile divergent branches is
    discouraged. You can squelch this message by running one of the following
    commands sometime before your next pull:
    
      git config pull.rebase false  # merge (the default strategy)
      git config pull.rebase true   # rebase
      git config pull.ff only       # fast-forward only
    
    git config pull.rebase false  # merge (the default strategy)
    git pull = git fetch + git merge
    
    git config pull.rebase true   # rebase
    git pull = git fetch + git rebase
    

    git pull 就不多说了,直接来看 git pull --rebase 吧。

    现在,用户 A,用户 B 和 远程仓库的代码版本都是最新且保持一致的。

    用户 A 在本地提交了两次 commit ,领先远程仓库 2 commit:

    # User A
    Administrator@PC-20200713AJJH MINGW64 /d/MyProject/Python/GitTest (master)
    $ git status
    On branch master
    Your branch is ahead of 'origin/master' by 2 commits.
      (use "git push" to publish your local commits)
    
    nothing to commit, working tree clean
    
    
    Administrator@PC-20200713AJJH MINGW64 /d/MyProject/Python/GitTest (master)
    $ git log
    commit db412233fd10dbf782147ae678310ef7a412ccf4 (HEAD -> master)
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 22:28:31 2020 +0800
    
        mv test.txt to test dir
    
    commit 32b9c4ee0b74b629e1d1e99f1d0173a831638d7c
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 22:15:01 2020 +0800
    
        delete d.txt
    
    commit 70f19e6d0788ad7fca07b129a8615084fe08f1e9 (origin/master, origin/HEAD)
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 21:58:26 2020 +0800
    
        modify c.txt
    
    commit 082b01177112fc3ccb93f234435fb06a930c19fb
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 21:05:16 2020 +0800
    
        add hello world in b.txt
    
    # User B
    [root@master GitTest]# git log
    commit 70f19e6d0788ad7fca07b129a8615084fe08f1e9
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 21:58:26 2020 +0800
    
        modify c.txt
    
    commit 082b01177112fc3ccb93f234435fb06a930c19fb
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 21:05:16 2020 +0800
    
        add hello world in b.txt
    
    commit d38440866faa62ff1a2c383be1fc780bbbb859f7
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 20:53:13 2020 +0800

    然后 A 将提交 git push 到了远程仓库:

    Administrator@PC-20200713AJJH MINGW64 /d/MyProject/Python/GitTest (master)
    $ git push
    Enumerating objects: 8, done.
    Counting objects: 100% (8/8), done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (5/5), done.
    Writing objects: 100% (6/6), 572 bytes | 572.00 KiB/s, done.
    Total 6 (delta 2), reused 0 (delta 0)
    remote: Resolving deltas: 100% (2/2), completed with 1 local object.
    To github.com:2392863668/GitTest.git
       70f19e6..db41223  master -> master
    

    B 也在本地提交了一次commit:

    [root@master GitTest]# vi looking.txt 
    [root@master GitTest]# git add looking.txt 
    [root@master GitTest]# git commit -m "add hello world in looking.txt"
    [master 9983c69] add hello world in looking.txt
     1 file changed, 1 insertion(+)
    [root@master GitTest]# git log
    commit 9983c69644ade74a4fa0a2fa4f7bd1c1771f39a5
    Author: looking <looking@qq.com>
    Date:   Wed Jul 29 23:29:39 2020 +0800
    
        add hello world in looking.txt
    
    commit 70f19e6d0788ad7fca07b129a8615084fe08f1e9
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 21:58:26 2020 +0800
    
        modify c.txt
    
    commit 082b01177112fc3ccb93f234435fb06a930c19fb
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 21:05:16 2020 +0800
    
        add hello world in b.txt
    

    然后 B 也准备将提交 git push 到远程仓库:

    [root@master GitTest]# git push
    warning: push.default is unset; its implicit value is changing in
    Git 2.0 from 'matching' to 'simple'. To squelch this message
    and maintain the current behavior after the default changes, use:
    
      git config --global push.default matching
    
    To squelch this message and adopt the new behavior now, use:
    
      git config --global push.default simple
    
    See 'git help config' and search for 'push.default' for further information.
    (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
    'current' instead of 'simple' if you sometimes use older versions of Git)
    
    To git@github.com:2392863668/GitTest.git
     ! [rejected]        master -> master (fetch first)
    error: failed to push some refs to 'git@github.com:2392863668/GitTest.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first merge the remote changes (e.g.,
    hint: 'git pull') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    

    由于远程分支已经继续往前走了,所以 B 自然而然 push 失败了,而且消息也提示让先 'git pull',这时候我们的 git pull --rebase 该上场了,git pull --rebase 以后,我们查看版本日志图,发现 modify c.txt 后面的日志记录并没有像之前那样有直观的合并记录了。直接先 git pull, 再 git merge 的话则无法避免这种情况。

    [root@master GitTest]# git pull --rebase
    remote: Enumerating objects: 6, done.
    remote: Counting objects: 100% (6/6), done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 6 (delta 2), reused 6 (delta 2), pack-reused 0
    Unpacking objects: 100% (6/6), done.
    From github.com:2392863668/GitTest
       70f19e6..db41223  master     -> origin/master
    First, rewinding head to replay your work on top of it...
    Applying: add hello world in looking.txt
    
    [root@master GitTest]# git log
    commit 3fceb8a9bdb24500a68477d4560c33cb305b5d5f
    Author: looking <looking@qq.com>
    Date:   Wed Jul 29 23:29:39 2020 +0800
    
        add hello world in looking.txt
    
    commit db412233fd10dbf782147ae678310ef7a412ccf4
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 22:28:31 2020 +0800
    
        mv test.txt to test dir
    
    commit 32b9c4ee0b74b629e1d1e99f1d0173a831638d7c
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 22:15:01 2020 +0800
    
        delete d.txt
    
    commit 70f19e6d0788ad7fca07b129a8615084fe08f1e9
    Author: 2392863668 <2392863668@qq.com>
    Date:   Wed Jul 29 21:58:26 2020 +0800
    
    [root@master GitTest]# git log --oneline --decorate --color --graph
    * 3fceb8a (HEAD, master) add hello world in looking.txt
    * db41223 (origin/master) mv test.txt to test dir
    * 32b9c4e delete d.txt
    * 70f19e6 modify c.txt
    * 082b011 add hello world in b.txt
    * d384408 mv a.txt to test directory
    *   648e3e1 Merge branch 'dev' to 'master'
    |\  
    | * d2009f7 (dev) add one line in c.txt by user B again
    | * 4505d98 add one line in b.txt by user B again
    * | cc12a89 add one line in a.txt by user A again
    |/ 
    

    然后 B 再次尝试提交 git push 到远程仓库(这次 push 成功):

    [root@master GitTest]# git push
    warning: push.default is unset; its implicit value is changing in
    Git 2.0 from 'matching' to 'simple'. To squelch this message
    and maintain the current behavior after the default changes, use:
    
      git config --global push.default matching
    
    To squelch this message and adopt the new behavior now, use:
    
      git config --global push.default simple
    
    See 'git help config' and search for 'push.default' for further information.
    (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
    'current' instead of 'simple' if you sometimes use older versions of Git)
    
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 233 bytes | 0 bytes/s, done.
    Total 2 (delta 1), reused 0 (delta 0)
    remote: Resolving deltas: 100% (1/1), completed with 1 local object.
    To git@github.com:2392863668/GitTest.git
       db41223..3fceb8a  master -> master

    如果以上直接 git pull 的话,git 会直接弹出一个类似下面这种的 merge 界面(如果有冲突的话还需要处理冲突):

    Administrator@PC-20200713AJJH MINGW64 /d/MyProject/Python/GitTest (master)
    $ git pull
    remote: Enumerating objects: 2, done.
    remote: Counting objects: 100% (2/2), done.
    remote: Total 2 (delta 1), reused 2 (delta 1), pack-reused 0
    Unpacking objects: 100% (2/2), done.
    From github.com:2392863668/GitTest
       db41223..3fceb8a  master     -> origin/master
    Merge made by the 'recursive' strategy.
     looking.txt | 1 +
     1 file changed, 1 insertion(+)
    

     而且可以看到直观的合并记录了(虽然不一定是你想要的)。

    整个例子讲下来,相信你已经知道 git pull --rebase 的作用了。 

    展开全文
  • 关于 git pullgit pull origin develop 的区别 闲来无事,正于网上冲浪之际,一位漂亮小姐姐抛来一个问题:git pullgit pull origin develop 有啥区别,一个答案从脑海里一闪而过——没啥区别,但好像也不对...
  • git pull命令操作 git pull <remote> <branch> git pull <remote> <branch> 解决1: git pull origin v2.0.0 git branch --set-upstream-to=origin/<branch> v2.0.0 解决2: git ...
  • git pullgit pull --rebase

    千次阅读 2019-03-21 09:28:54
    1.git pull git pull = git fetch + git merge FETCH_HEAD git pull --rebase = git fetch + git rebase FETCH_HEAD 2.merge 和 rebase 现在我们有这样的两个分支,test和master,提交如下: D---E test / A--...
  • git pullgit pull -- rebase

    千次阅读 2017-12-14 23:56:06
    1 工作区不干净(没有git add .)可以git pull或者git pull - -rebase代码吗? 结果是不可以,如果你没有将修改提交到暂存区,那么无论是pull还是pull –rebase都是不可以拉下来代码的 接下来我们再多思考下: 2 ...
  • git fetch, git pull, git pull -rebase区别

    万次阅读 2016-04-20 13:51:32
    1、git fetch vs git pull 都是从远程拉取代码到本地,git fetch只是拉取到本地,git pull不仅拉取到本地还merge到本地分支中。所以git pullgit fetch与git merge的集合体。 详情参考: ...
  • git pull以及git pull --rebase

    千次阅读 2018-06-03 11:51:24
    git pull的作用是将远程库中的更改代码合并到当前分支中,默认为:git fetch + git merge git fetch 的作用就相当于是从远程库中获取最新版本到本地分支,不会自动进行git merge git pull –rebase 加上–rebase...
  • 对比git pullgit pull --rebase

    千次阅读 2018-01-16 10:38:27
    对比git pullgit pull --rebase 1、使用下面的关系区别这两个操作: git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 2 一、基本 git rebase用于把一个分支的...
  • 在push代码时,会提示使用git pull命令,也就是拉取远端代码,更新我们的仓库,那么为什么又要加个 --rebase命令呢?下面来说说这个问题,先从这两命令开始。 git pull = git fetch + git merge FETCH_HEAD git ...
  • git pullgit pull --rebase的区别详解

    千次阅读 2020-03-21 11:32:30
    git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase的区别。假设有3次提交A,B,C。 在远程分支origin的基础上创建一个名为"mywork"的分支并提交了,...
  • 简单对比git pullgit pull --rebase的使用 使用下面的关系区别这两个操作: git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase的区别。 假设有...
  • 详解git pullgit fetch的区别:

    万次阅读 多人点赞 2018-09-28 17:16:36
    在我们使用git的时候用的更新代码是git fetch,git pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢?有经验的人总是说最好用git fetch+git merge,不建议用git pull。也有人说git pull=git fetch+git ...
  • git pull=git fetch + git merge git pull --rebase=git fetch+git rebase git fetch : 从远程分支拉取代码,可以得到远程分支上最新的代码。 所以git pull origin master与git pull --rebase origin master的区别...
  • git pull命令

    万次阅读 多人点赞 2017-09-11 20:24:18
    git pull命令作用:从另一个存储库或本地分支关联的远端分支获取最新代码,并与本地代码资源整合。git pull命令执行过程:取回远程主机某个分支的更新,再与本地的指定分支合并(可能存在需手动解决的冲突)。 使用...
  • 请移步原文 ... 1.git pull ...git pull = git fetch + git merge FETCH_HEAD ...git pull --rebase = git fetch + git rebase FETCH_HEAD ...所以git pull origin master与git pull --rebase orig..
  • git pullgit pull --rebase的不同

    千次阅读 2017-01-05 02:54:58
    git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase的区别。 假设有3次提交A,B,C。 pullgit pull --rebase的不同" t
  • git pullgit pull origin master报如下警告 hint: Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch this message by running one of the following hint:...
  • git pullgit pull --rebase

    千次阅读 2015-04-21 10:59:34
    git pull的默认行为是git fetch + git merge, git pull --rebase则是git fetch + git rebase. 从目的来说,两者没差别,运行之后, 你能获得一样的code base。 但从版本管理角度,这两者有各自的使用意义。 ...
  • git fetch和git pull之间的区别

    万次阅读 多人点赞 2015-01-04 15:33:16
    git fetch和git pull都可以用来更新本地库,它们之间有什么区别呢? 每一个本地库下都有一个.git的隐藏文件夹,文件夹中的文件保存着跟这个本地库相关的信息 首先来看下其中的config文件 [core] ...
  • 使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull –rebase = git fetch + git rebase 现在来看看git merge和git rebase的区别。 假设有3次提交A,B,C。 在远程分支origin的基础上创建一个...
  • 1. git pull/clone 报错 “git clone failed: Authentication failed for xxxxx.git” 今天 pull 代码时,出现报错提示:“git pull failed: Authentication failed for xxxxx.git”。前几天是可以的,怎么会突然...
  • git-pull-request:通过命令行发送git pull请求
  • git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase的区别。 假设有3次提交A,B,C。 在远程分支origin的基础上创建一个名为"mywork"的分支并提交了...
  • git pull命令的用法

    万次阅读 2019-02-28 09:05:53
    git pull用法: git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。 一句话总结git pullgit fetch的区别:git pull = git fetch + git merge git fetch不会进行合并执行后需要手动执行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 154,052
精华内容 61,620
关键字:

gitpull