我不确定如何(用EGit创建分支,可能)我在配置中以此部分结束:
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "sfc"]
remote = .
merge = refs/heads/master
rebase = true
我想理解这一点。我不确定remote = .
中的点是否被解释为url(当前目录)或特殊存储库名称(我自己的别名)?这是合法/正常/典型,还是我猜这是搞砸了?有一个指向同一个存储库的“远程”规范让我觉得很奇怪。此外,该分支确实存在于遥控器中......这对于推/拉行为的含义是什么?
更多信息:
$ git remote show origin
* remote origin
Fetch URL: ssh://git@10.0.0.3/var/gitrep/zzz.git
Push URL: ssh://git@10.0.0.3/var/gitrep/zzz.git
HEAD branch: master
Remote branches:
master tracked
sfc tracked
Local branch configured for 'git pull':
master merges with remote master
Local refs configured for 'git push':
master pushes to master (fast-forwardable)
sfc pushes to sfc (up to date)
$ git branch -vv
* master f394d8b [origin/master: ahead 1] Bla blah...
sfc 8065309 [master: behind 89] Bla blah...
答案 0 :(得分:4)
这很奇怪。我继续创建了一个虚拟仓库,更改了.git/config
以使远程变为.
,添加了一些代码,提交并推送。
$ git checkout weird
$ touch nothing
$ git add nothing
$ git commit -a -m "test"
[sup 031541e] test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 nothing
$ git push
fatal: The upstream branch of your current branch does not match
the name of your current branch. To push to the upstream branch
on the remote, use
git push . HEAD:master
To push to the branch of the same name on the remote, use
git push . weird
$ git push . weird
Everything up-to-date
它似乎在本地命中了存储库,这当然意味着推送导致git说它是最新的。
答案 1 :(得分:2)
Git会将此解析为相对路径,就像../../some/other/repo
一样。因此,它将解析存储库本身的目录。由于您的远程合并目标为master
,但在git push
结束时运行sfc
,只会尝试将master
快进到sfc
。
您可以通过运行
创建这样的分支git branch --set-upstream somebranch
也许这就是你所做的,因为你忘了设置一个远程分支作为起点。