2010-06-28 17 views
67

mir diese Nachricht von Git bekam:Verwirrende Fehlermeldung von git

Sie gebeten, von der Fernbedienung ‚Herkunft‘ zu ziehen, aber nicht ein Zweig angeben. Da dies für Ihre aktuelle Verzweigung nicht die standardmäßig konfigurierte Remote-Adresse ist, müssen Sie eine Verzweigung in der Befehlszeile angeben.

Kann jemand es erklären? und wichtiger, wie man es repariert?

Antwort

66

Sie müssen git mitteilen, welche Verzweigung Sie aus den Remote-Repos "Ursprung" ziehen möchten.

Ich denke, Sie wollen die Standard-Zweig (Master) so git pull origin master sollte Ihr Problem beheben.

Weitere Informationen finden Sie unter git help branch, git help pull und git help fetch.

+2

, damit es funktioniert Ich musste "Master" Zweig (es gab keine Niederlassung ausgewählt) und ziehen, das Problem behoben. – cinek

+0

@cinek: Ja, 'git pull' zieht und verschmilzt mit dem * aktuellen Zweig *, so dass sein Verhalten völlig davon abhängt, welcher Zweig ausgecheckt ist, und mit einem losgelösten HEAD (kein Zweig ausgecheckt), kann er nicht wissen was Zweig zu ziehen. – Cascabel

+0

@cinek: Ich nehme an, du warst neu bei Git, also gebe ich zu, dass du in einem völlig normalen Zustand auf dem Zweigmeister bist, mein Schlechter :-). – p4bl0

4

Nachricht sagt genau worum es geht. Ihr aktueller Zweig ist keinem Zweig in Ursprung zugeordnet. Also weiß Git nicht, was ich anziehen soll.

Was ist zu tun? Das hängt davon ab ...

In den meisten üblichen Situation Sie einige lokale Niederlassung xyz abarbeiten, die sich von Master verzweigten, die aus Herkunft geklont wird ‚s Master. Der übliche Weg, um es zu lösen, ist auf Master zu wechseln und zu ziehen, um es mit Herkunft zu synchronisieren und dann zurück zu xyz und rebase master.

Aber in Ihrer Situation möchten Sie vielleicht etwas anderes tun. Wir können es nicht wissen, ohne die Details Ihrer Filialen und Fernbedienungen zu kennen und wie Sie sie verwenden möchten.

70

es zu beheben, sind Sie auf dem master Zweig unter der Annahme und den master Zweig vom origin Fern ziehen will, in neuen genug Git-Versionen (1.8 oder höher):

git branch -u origin/master master 

(analog für andere Branchen . und/oder Fernbedienungen)

Wenn Sie dies mit einem Push kombinieren kann, ist es noch kürzer:

git push -u origin master 

Danach wird eine Ebene git pull/git push wird tun, was Sie erwarten.


Während der Serie Git 1.7 git branch hatte das nicht -u Schalter (nur git push tat), und stattdessen hatte man das viel länger --set-upstream zu verwenden:

git branch --set-upstream master origin/master 

Hinweis die Umkehrung der Argumente im Vergleich zu -u. Ich habe diese Bestellung mehr als einmal durchgeblättert.


All diese, übrigens, sind Kürzel für die folgenden tun, die Sie noch explizit tun:

git config branch.master.remote origin 
git config branch.master.merge refs/heads/master 

Vor 1.7, Sie hatten es auf diese Weise zu tun.

+0

Ich denke, dass der Befehl an der Spitze (zumindest in meiner Version von Git) den Upstream eines Zweiges namens "Ursprung" auf "Ursprung/Master" setzt. Wenn Ihr Zweig lokal heißt "Master" Ich denke, Sie möchten: 'git Zweig --set-upstream Masterursprung/Master' –

+0

Woops. Danke, Evan, behoben. –

+0

Interessanterweise ist die '-u' Option in meiner Version 1.8.5.3 nicht dokumentiert für' git branch' und macht Ihre Dokumentation hier noch wichtiger. Und wie Sie feststellen, war die Option in Version 1.7 nicht verfügbar. *. Da '-u' eine Abkürzung für' --set-upstream' ist, sollte die Reihenfolge ihrer Argumente nicht umgekehrt sein wie bei '--set-upstream' aufgrund @ EvanDonovans Kommentar? – hobs