2013-07-22 6 views
10

Ich bin nicht sicher, wie (Zweig mit EGit erstellt, wahrscheinlich) ich mit diesem Abschnitt in meiner Config beendet:Was bedeutet remote =. in GIT Konfig?

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

Ich möchte, dies verstehen. Ich bin mir nicht sicher, ob der Punkt in remote = . als URL (aktuelles Verzeichnis) oder ein spezieller Repository-Name (Alias ​​für mich selbst) interpretiert wird? Ist das legal/normal/typisch, oder sollte ich vermuten, dass dies durcheinander ist? Es sieht für mich merkwürdig aus, eine "Remote" -Spezifikation zu haben, die auf dasselbe Repository verweist. Darüber hinaus existiert dieser Zweig tatsächlich in der Ferne ... Was wären die Implikationen für dieses Push/Pull-Verhalten?

Einige weitere Informationen:

$ 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

Ich denke, es verweist auf Ihr aktuelles Repository ... versuchen Sie, ein Commit zu erstellen und '' git fetch sfc'' zu machen? –

Antwort

4

die ziemlich seltsam. Ich ging voran und schuf ein Dummy Repo, geändert .git/config, um eine Fernbedienung . zu machen, fügte etwas Code hinzu, engagierte sich und stieß.

$ 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 

Es erscheint das Repository lokal treffen zu werden, was natürlich bedeutet, dass ein Push-Ergebnisse in git sagen, es ist auf dem neuesten Stand ist.

2

Git wird dies als relativer Pfad auflösen, genau wie ../../some/other/repo. Als solches löst es das Verzeichnis des Repositorys selbst auf. Da das Remote-Merge-Ziel master ist und git push ausgeführt wird, während sfc ausgecheckt ist, wird einfach versucht, master auf master zu sfc vorzuspulen.

können Sie Zweige erstellen, wie sie von

Lauf
git branch --set-upstream somebranch 

das ist, was du getan hast Vielleicht, weil Sie einen Remote-Zweig als Ausgangspunkt zu setzen vergessen.