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
如何在不丢失任何数据或任何违规行为的情况下解决问题?
答案 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 status
和git 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来自新创建的分支