Что означает remote =. в GIT config?

Я не уверен, как (ветвь создана с EGit, возможно). Я закончил этот раздел в моей конфигурации:

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

Я хотел бы это понять. Я не уверен, что точка в remote = . интерпретируется как url ​​(текущий каталог) или специальное имя репозитория (псевдоним для меня)? Является ли это законным/нормальным/типичным, или я должен догадаться, что это испорчено? Мне кажется странным иметь спецификацию "remote", которая указывает на тот же репозиторий. Более того, эта ветвь действительно существует в удаленном... Каковы были бы последствия этого для поведения push/pull?

Дополнительная информация:

$ git remote show origin
* remote origin
  Fetch URL: ssh://[email protected]/var/gitrep/zzz.git
  Push  URL: ssh://[email protected]/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/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 говорит об этом.

Ответ 2

Git разрешит это как относительный путь, точно так же, как ../../some/other/repo. Таким образом, он разрешит каталог самого репозитория. Поскольку целью удаленного слияния является master, выполняется запуск git push, в то время как sfc проверяется, просто попробуйте ускорить перемотку master в sfc.

Вы можете создать такие ветки, запустив

git branch --set-upstream somebranch

Возможно, это то, что вы сделали, потому что вы забыли установить удаленную ветку в качестве отправной точки.