搜索

首页  >  问答  >  正文

从github上pull一个本地不存在的分支的方法?

github分支结构

本地代码的结构

现在我想从github中pull其develop分支,想达到本地也有master和develop分支的效果,但是我用

git pull origin develop

发现这条命令的结果是在本地的master分支基础上对github的develop分支进行合并

问题1:难道需要现在本地创建一个develop分支,然后checkout到本地develop分支,然后再执行git pull操作吗?如果是这样,那么如果本地分支的个数和github上相差很大时,需要每个都按照上面的方法走一遍?

问题2:有没有一条命令,能对本地的所有分支进行更新同步到github上面的版本?

问题3:有没有方法,能把所有的github的分支更新pull下来?

问题4:如果是本地存在某个分支test,而github上面不存在该分支,是不是需要人工删除?有没有像问题3中把所有分支更新pull下来,包括已删除的分支pull到本地之后,本地的相应分支也会删除

ringa_leeringa_lee2807 天前532

全部回复(3)我来回复

  • ringa_lee

    ringa_lee2017-04-24 09:13:39

    1. git fetch origin 取远程的变更即可。或者 git pull 取当前分支的更新的同时会把其它分支也拖回来的。除非 clone 的时候用了 -b 选项。你也可以用 git fetch origin develop 来指定。git fetchgit push 的对应。
    2. 你太懒了。man git-push 就可以看到答案(好吧,虽然我之前也不知道):

    --all
    Instead of naming each ref to push, specifies that all refs under refs/heads/ be pushed.

    回复
    0
  • 阿神

    阿神2017-04-24 09:13:39

    • 如果你仅要把远端的版本库同步到本地:
    $ git fetch origin
    
    • 如果你想要在完成同步远程版本库的基础上,把远程分支里的某个内容给pull下来。仔细想想,git pull就是分为git fetchgit merge两个命令来实现的,前者对版本库操作,后者通过版本库影响本地文件。那么,你可以
    $ git checkout -b localbranch
    $ git pull origin remotebranch:localbranch // 当本地分支和远程分支名称相同时,只写一个就可以
    // 这种方法适合pull指定分支
    
    • 你要把所有本地分支都推送到远端
    $ git push -all
    

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-24 09:13:39

    理解了 git pull = fetch + merge ,那么问题3是做不到的,因为merge有可能有冲突,只能操作一个分支。

    我也讨厌英文手册,难得看。。。

    回复
    0
  • 取消回复