2014-09-04 5 views
10

Ich habe versucht, die Anweisungen von Git: "Not currently on any branch." Is there an easy way to get back on a branch, while keeping the changes? zu folgen, aber git checkout scheint gebrochen zu werden:Warum sagt Git mir "Derzeit nicht in einem Zweig" nachdem ich "git checkout origin/<branch>" ausgeführt habe?

$ git checkout origin/web-zach 
HEAD is now at 1366cb1... Changed so css files not ignored 

$ git status 
# Not currently on any branch. 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  .cordova/config.xml 
#  www/languages/pt/sounds/ 
nothing added to commit but untracked files present (use "git add" to track) 

Genauer gesagt, ich bin besorgt über die „derzeit nicht auf jedem Zweig“ -Meldung. git checkout scheint hier nichts zu tun ... Ist nicht der ganze Zweck dieses Befehls, mich auf einen Zweig zu setzen? Wie kann ich wieder in einen Zweig zurückkehren und erneut etwas tun?

+0

Was Zweig willst du zur Kasse gehen?Wenn Sie sich auf "Änderungen" beziehen, meinen Sie die nicht verfolgten Dateien? –

+0

Ich habe versucht, zum Ursprung/Web-Zach zu schieben, und die "Änderungen" in der anderen Frage (und zuvor in meiner, bevor ich sie verloren habe - glücklicherweise unterstützt sie mit altmodischen Kopie-Paste) bezogen sich auf einige Änderungen, die ich war versuchen zu begehen. Ich interessiere mich nicht wirklich für die nicht verfolgten Dateien und sollte sie wahrscheinlich zu meinem .gitignore hinzufügen. – hubatish

Antwort

29

Die Ausgabe von git status zeigt an, dass Ihr Arbeitsverzeichnis sauber ist; gut.

Jetzt, indem Sie

git checkout origin/web-zach 

Sie versuchen, eine Fernverfolgung Zweig zu überprüfen, origin/web-zach genannt; Es handelt sich um eine spezielle Zweigstelle, die für Ihr Repo lokal ist und den entsprechenden Zweig web-zach im Remote-Repository namens origin verwaltet.

jedoch die HEAD Referenz (die Sie als ein denken Sie-sind-hier Marker auf einer Karte) kann nicht Punkt zu einem Fernverfolgung Zweig; nur zu einem "normalen" lokalen Zweig, oder zu einem Commit direkt. Wenn Sie eine Remote-Tracking-Zweig zu überprüfen, versuchen, die HEAD Bezug auf endet direkt an der Spitze des Remote-Tracking-Zweig zeigt (dh verpflichten die auf die sich die Fernverfolgung Verzweigungspunkte):

enter image description here

Wenn HEAD zu einer „normalen“ lokalen Niederlassung zeigt nicht, sondern verweist auf eine verpflichten direkt, erhalten Sie in so genannten „losgelöst-HEAD Zustand“ nach oben. Es ist nicht das Ende der Welt, aber es wird Ihnen wahrscheinlich einige Überraschungen ersparen, wenn Sie vermeiden, in diesem Zustand so weit wie möglich zu landen (zumindest zu Beginn Ihres Git-Lernens).

die Situation zu beheben, müssen Sie HEAD zu einem gewissen lokalen Zweig wieder zu befestigen. Hier können Sie erstellen und zu überprüfen, eine solche lokalen Zweig, indem Sie zum Beispiel

git checkout -b web-zach 

HEAD wird dann auf die neu geschaffene lokale Niederlassung web-zach genannt werden weisend:

enter image description here

Dann sollten Sie

$ git status 
On branch web-zach 
Untracked files: 
    (use "git add <file>..." to include in what will be committed) 
     .cordova/config.xml 
     www/languages/pt/sounds/ 
nothing added to commit but untracked files present (use "git add" to track) 

Danach bekommen, werden Sie frei sein, um Änderungen vorzunehmen, inszenieren sie zu begehen, und (wenn Sie Schreibzugriff auf den Remote-Repo zu origin entsprechenden haben und sonst niemand hat etwas zu origin/web-zach seit Ihrem letzten git fetch geschoben), schieben, mit

git push -u origin web-zach 
+2

danke, das ist wirklich hilfreich! Ich habe deine Anweisungen befolgt, und alles scheint zu funktionieren, wie du sagst. Ich bin in der lokalen Filiale web-zach - ist es nicht möglich, "auf" der Remote-Filiale zu sein? – hubatish

+0

Nein, Sie können nicht "Herkunft/Web-Zach" auschecken, wie Sie "Web-Zach". Sie sind verschiedene Arten von Zweigen. Sie können sich ein Fern-Tracking-Zweig (wie "Herkunft/Web-Zach") als ein feindliches Stück in einem Schachspiel vorstellen: Sie können sehen, wo das Stück ist, aber Sie dürfen es nicht bewegen. – Jubobs

+1

Danke für die Erklärung und mich zu gehen lesen http://git-scm.com/book/en/Git-Branching-Remote-Branches#Tracking-Branches Das macht jetzt Sinn – hubatish

Verwandte Themen