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

github分支结构

  • master
  • develop

本地代码的结构

  • master

现在我想从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到本地之后,本地的相应分支也会删除

阅读 36.5k
3 个回答
  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.

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏