GIT配置中的remote=是什么意思?

12

我不确定是如何(可能是使用EGit创建的分支)在我的配置文件中出现了这个部分:

[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "sfc"]
    remote = .
    merge = refs/heads/master
    rebase = true

我希望理解这个问题。我不确定 remote = . 中的点是否被解释为url(当前目录)或特殊存储库名称(别名为自己)?这是合法/正常/典型的吗,还是我应该猜测这是出了问题?对我来说,将“remote”规范指向同一存储库看起来很奇怪。此外,该分支确实存在于远程…这对于推拉行为会产生什么影响?

更多信息:

$ 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...

1
我认为它引用了您当前的存储库...尝试创建提交并执行“git fetch sfc”? - Markus Unterwaditzer
2个回答

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

看起来它在本地仓库中进行了访问,这意味着push操作会导致git显示已经是最新的状态。


3
Git会将此解释为相对路径,就像../../some/other/repo一样。因此,它将解决存储库本身的目录。由于您的远程合并目标是master,在检出sfc的情况下运行git push,只会尝试将master快进到sfc
您可以通过运行以下命令来创建这样的分支:
git branch --set-upstream somebranch

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接