12

我不确定(可能是用 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...
4

2 回答 2

4

这很奇怪。我继续创建了一个虚拟存储库,更改.git/config为远程 be .,添加了一些代码,提交并推送。

$ 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 说它是最新的。

于 2013-07-22T18:10:41.517 回答
3

Git 会将其解析为相对路径,就像../../some/other/repo. 因此,它将解析存储库本身的目录。由于您的远程合并目标是mastergit pushsfc签出时运行,将简单地尝试快进mastersfc.

您可以通过运行创建这样的分支

git branch --set-upstream somebranch

也许这就是您所做的,因为您忘记将远程分支设置为起点。

于 2013-07-22T20:03:55.110 回答