Git没有显示本地的所有分支

时间:2013-03-30 18:28:56

标签: git github moodle git-remote

我从Github分了一个回购。在执行git remote -v时,它会显示:

origin  https://github.com/myusername/moodle.git (fetch)
origin  https://github.com/myusername/moodle.git (push)
upstream    https://github.com/moodle/moodle.git (fetch)
upstream    https://github.com/moodle/moodle.git (push)

moodle.git有大约10个分支,但回购只显示其中的2个。在做git branch -a(显示所有分支)时,我得到:

  MOODLE_24_STABLE// just these two on local..how?
* master//
  origin/MOODLE_13_STABLE
  origin/MOODLE_14_STABLE
  origin/MOODLE_15_STABLE
  origin/MOODLE_16_STABLE
  origin/MOODLE_17_STABLE
  origin/MOODLE_18_STABLE
  origin/MOODLE_19_STABLE
  origin/MOODLE_20_STABLE
  origin/MOODLE_21_STABLE
  origin/MOODLE_22_STABLE
  origin/MOODLE_23_STABLE
  origin/MOODLE_24_STABLE
  origin/master
  upstream/MOODLE_13_STABLE
  upstream/MOODLE_14_STABLE
  upstream/MOODLE_15_STABLE
  upstream/MOODLE_16_STABLE
  upstream/MOODLE_17_STABLE
  upstream/MOODLE_18_STABLE
  upstream/MOODLE_19_STABLE
  upstream/MOODLE_20_STABLE
  upstream/MOODLE_21_STABLE
  upstream/MOODLE_22_STABLE
  upstream/MOODLE_23_STABLE
  upstream/MOODLE_24_STABLE
  upstream/master

如何在不丢失任何数据或任何违规行为的情况下解决问题?

2 个答案:

答案 0 :(得分:18)

克隆存储库不会复制本地存储库上的所有远程分支:对于具有大量分支的大型远程存储库,这会使用大量分支污染您的本地命名空间。

我有一个one-liner command来创建跟踪远程仓库的所有远程分支的本地分支,但通常不需要这样做。
您只需在需要时创建跟踪远程分支的本地分支。

git checkout -b aBranch --track origin/aBranch

# or, shorter:
$ git checkout --track origin/aBranch 
Branch aBranch set up to track remote branch refs/remotes/origin/aBranch.
Switched to a new branch "aBranch"  

# even shorter at the end of this answer.

添加--track可以设置配置,以便从新分支中将起点分支标记为“ upstream ”。
此配置将告诉git显示git statusgit branch -v中两个分支之间的关系 此外,它指示git pull而不带参数,以便在检出新分支时从上游拉出。


kostix提到在远程分支上分支分支时隐含--track(除非branch.autosetupmerge设置为false

这可能就够了

git checkout aBranch

git checkout man page的确切解释是:

  

如果找不到<branch>但在一个遥控器(称为<remote>)中确实存在一个匹配名称的跟踪分支,则视为等效于:

$ git checkout -b <branch> --track <remote>/<branch

答案 1 :(得分:5)

有时候,如果您没有提取最新代码,则不会被允许签出新创建的分支。因为您的更改不同步。

首先 - 拉最新的 -checkout来自新创建的分支