老实说,我找不到git remote show
输出的任何详细文档(当然不在man page上)
特别是,对Local
部分的清晰,准确的解释将不胜感激。
我发现令人困惑的一个例子:
这里我有两个遥控器, klas 和 origin 以及它们产生的输出:
> git remote show klas
* remote klas
Fetch URL: ..\klasrepo
Push URL: ..\klasrepo
HEAD branch: master
Remote branches:
experiment tracked
feature tracked
master tracked
pu tracked
stashbranch tracked
Local branch configured for 'git pull':
pu merges with remote pu
Local refs configured for 'git push':
experiment pushes to experiment (fast-forwardable)
feature pushes to feature (fast-forwardable)
master pushes to master (fast-forwardable)
pu pushes to pu (up to date)
> git remote show origin
* remote origin
Fetch URL: C:/Temp/git/.\barerepo.git
Push URL: C:/Temp/git/.\barerepo.git
HEAD branch: experiment
Remote branches:
experiment tracked
master tracked
Local branches configured for 'git pull':
experiment merges with remote experiment
master rebases onto remote master
Local refs configured for 'git push':
experiment pushes to experiment (up to date)
master pushes to master (fast-forwardable)
请注意实验和主列在两者 local refs configured for 'git push'
下。那是什么意思?我已将主和实验配置为分别跟踪 origin / master 和 origin / experiment (和 pu 跟踪 klas / pu )。
我的本地功能分支未设置为跟踪任何内容,但仍列在local refs configured for 'git push'
下(唯一的连接似乎是相同的名称,另一个非跟踪分支,< em> foo ,未提及)。在功能上的git push
提供了fatal: The current branch feature has no upstream branch.
- 几乎不是“快速转发”。
似乎local refs configured for 'git push'
下列出的本地分支的标准是,恰好存在一个具有相同名称的远程分支?
供参考:
> git branch -vva
experiment 0cf7b2a [origin/experiment] added rand content 82 to .\rand_content.txt
* feature 4b25f46 added rand content 62 to bar.txt
foo 40aee50 added rand content 17 to .\rand_content.txt
master 4b25f46 [origin/master] added rand content 62 to bar.txt
pu 44ad10b [klas/pu] added rand content 51 to doo.txt
remotes/klas/experiment 1f4e89b app
remotes/klas/feature 884e953 added rand content 80 to bar.txt
remotes/klas/master 57877c1 added in tobias repo
remotes/klas/pu 44ad10b added rand content 51 to doo.txt
remotes/klas/stashbranch 8678cf0 added rand content 44 to .\rand_content.txt
remotes/origin/HEAD -> origin/master
remotes/origin/experiment 0cf7b2a added rand content 82 to .\rand_content.txt
remotes/origin/master 4b25f46 added rand content 62 to bar.txt
> git config --list --local | select-string 'branch|remote'
remote.origin.url=C:/Temp/git/.\barerepo.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.master.rebase=true
remote.klas.url=..\klasrepo
remote.klas.fetch=+refs/heads/*:refs/remotes/klas/*
branch.experiment.remote=origin
branch.experiment.merge=refs/heads/experiment
branch.pu.remote=klas
branch.pu.merge=refs/heads/pu
> git --version
git version 1.8.1.msysgit.1
答案 0 :(得分:4)
这似乎是Git 1.8.1中的一个错误。
略读Git源代码(特别是remote.c
和builtin/remote.c
),“为'git push'配置的本地引用”下的列表计算如下:
.git/remotes/<remotename>
(过时的配置文件;请参阅git help repository-layout
).git/branches/<branchname>
(另一个过时的配置文件)remote.<remotename>.push
配置项:
作为唯一推送refspec 请注意,上述算法不关注branch.<branchname>.remote
,branch.<branchname>.merge
或push.default
。
在典型的使用模式下,上述算法中的步骤#1将永远不会找到任何已配置的refspec,因此将使用:
。 refspec是一个简单的匹配refspec,因此如果在本地和远程存储库中都有一个名为git remote show <remotename>
的分支,则典型用法<branchname> pushes to <branchname>
将始终打印<branchname>
。