我有一个从远程克隆的本地存储库。当我这样做时:
git branch -a
我明白了:
* add-real-testcases
couchdb_1.1.0
master
remotes/origin/HEAD -> origin/master
remotes/origin/couchdb_1.1.0
现在,我认为这不正确。我期待的是:
couchdb_1.1.0 -> origin/couchdb_1.1.0
由于我的couchdb_1.1.0
分支正在跟踪远程分支(我只是推送到它,没有额外的信息)。所以我去查看我的.git/config
:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@myhost.com:my_repo.git
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "couchdb_1.1.0"]
remote = origin
merge = refs/heads/couchdb_1.1.0
正如我所料,跟踪信息就在那里。但是git branch -a
没有显示出来。
我遇到这种情况可能是因为我一直在创建和删除本地和远程分支。所以我尝试通过手动设置上游来解决这个报告问题(即使它已经在config
中设置,但无论如何......)
$ git branch couchdb_1.1.0 --set-upstream origin/couchdb_1.1.0
Branch couchdb_1.1.0 set up to track remote branch couchdb_1.1.0 from origin.
但git branch -a
仍未显示。
我虽然git branch
正在从.git/config
获取信息,但不知道它不是。或许我对->
中git branch -a
语法的含义感到困惑?
答案 0 :(得分:3)
您误解了git branch -a
的输出。 git branch
没有向您显示有关您的本地分支跟踪您的哪些远程分支的信息,它只是向您显示哪些分支是其他分支的“符号引用”。
在这种情况下,来源HEAD
是master
来源的符号引用。这只是告诉您默认(或对于非检出的非裸存储库)原点是master
。
尝试git branch -vv
查看当地分支机构的跟踪关系。