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

xan*_*xan 17 git moodle github 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)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 19

克隆一个repo不会复制本地repo上的所有远程分支:对于一个包含大量分支的大型远程仓库,这会使你的本地命名空间被大量的分支污染.

我有一个单行命令,以创建跟踪远程仓库的所有远程分支的本地分支,但通常不需要这样做.
您只需在需要时创建跟踪远程分支的本地分支.

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.
Run Code Online (Sandbox Code Playgroud)

添加a --track允许设置配置以将起点分支标记为来自新分支的" 上游 ".
此配置将让Git显示在两个分支之间的关系git statusgit branch -v.
此外,它在没有参数的情况下引导git pull在检出新分支时从上游拉出.


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

这可能就足够了

git checkout aBranch
Run Code Online (Sandbox Code Playgroud)

git checkout手册页的确切解释是:

如果<branch>未找到但在一个<remote>具有匹配名称的远程(称为)中确实存在跟踪分支,则视为等效于:

$ git checkout -b <branch> --track <remote>/<branch
Run Code Online (Sandbox Code Playgroud)


小智 5

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

所以首先从新创建的分支中获取最新的-checkout