git 拉取指定的远程分支到本地

1,843 阅读1分钟

远程仓库上,有人新建了一个远程分支

image.png

可以在 gitlab 页面上看到该分支

image.png

但是 git branch -rgit branch -a 却看不到该远程分支 image.png

这是为什么呢?这个问题我们放到最后

现在我们直接以该远程分支为源新建一个同名本地分支 image.png 发现报错了,这又是为什么呢?这个问题我们也放到最后

先说说正确的步骤

  1. 先拉取该远程分支到本地

    $ git fetch origin 远程分支
    

    image.png 此时 git branch -rgit branch -a 就可以看到该远程分支了

  2. 在本地创建一个同名的新分支并切换到该新分支

    $ git checkout -b 本地新分支(与远程分支同名) origin/远程分支
    // 等同于
    $ git checkout -b 远程分支
    

    image.png 提示 set up to track remote branch 说明新建的本地分支与同名远程分支已经建立追踪关系

  3. 此时我们再 git branch -a 就可以看到该远程分支对应的同名本地分支了 image.png

综上所述,推断出两点

  • 只有在 git fetch 之后,git branch -rgit branch -a 才能展示出远程仓库中新建的远程分支,可见 git branch -r并不会发请求去获取远程最新的分支情况
  • 当我们使用 git checkout -b 本地新分支(与远程分支同名) origin/远程分支 时,这个 origin/ 后面跟着的所谓远程分支,必须是 git branch -r 所展示的远程分支,不能仅仅以gitlab页面上有这个远程分支名为准