it-swarm.com.de

Upstream gegangen Nachricht beim Zurückschalten auf einen leeren Master-Zweig?

Meine Git-Version ist Git-1.9.4-preview20140611. Zuvor habe ich ein leeres Git-Origin-Repository geklont. Das Repository wurde geklont, jedoch mit der folgenden Meldung

Warnung: Sie scheinen ein leeres Repository geklont zu haben. Konnektivität überprüfen ... fertig.

Kopieren Sie anschließend eine .gitIgnore-Datei, die sich im Git-Master-Repository eines anderen Projekts befindet, und übergeben Sie sie an den lokalen Master. Diese Datei wurde von uns schon oft benutzt. Das scheint in Ordnung zu sein. Wir haben eine standardisierte .gitIgnore-Datei für alle unsere Projekte. Dies wurde im Rahmen von Best Practices erstellt.

Als nächstes wurde eine neue Verzweigung erstellt und Code an den physischen Speicherort kopiert, an dem sich das lokale Git-Repository befindet

git checkout -b FromCC

Code hinzugefügt und in diesem Zweig festgeschrieben.

git add --all
git commit -M "Blah"

Alle diese Operationen sind erfolgreich.

Mein Ziel ist es, diese Änderungen schließlich in der lokalen Hauptniederlassung zusammenzuführen.

Ich mache als nächstes

git checkout master

und bekomme folgende Nachricht.

Ihr Zweig basiert auf 'Origin/Master', aber der Upstream ist weg. (benutze "git branch --unset-upstream" um das Problem zu beheben)

Was bedeutet diese Nachricht? Warum sollte der Upstream "weggehen"?

Interessante Beobachtung: Ich habe heute den gleichen Prozess mit dem gleichen Master-Git-Repository wiederholt. Diesmal war das Git-Repository nicht leer. Es hatte .gitIgnore-Datei vor der Hand. Diesmal wurde die oben genannte Meldung nicht angezeigt.

11
DolphinJava

Es ist nicht das Upstream Repository (Origin selbst), sondern der bestimmte Zweig, den Sie geklont haben (master in Origin), der fehlt.

Außerdem ist die Nachricht von git irreführend: Der Zweig master auf Origin ist nicht weggegangen , es war niemals da . Wenn Sie das leere Repository geklont hatten, hatte es überhaupt keine Verzweigungen. Es gab weiterhin keine Niederlassungen. Daher verfolgte (ist) Ihre lokale master, die festgelegt wurde, um Origin/master zu verfolgen, einen Zweig, der nicht vorhanden war (existiert).

Die Nachricht ist eher für eine Situation wie diese gedacht:

$ git clone ...
$ git checkout featureX   # track some feature branch
[go away for a week, come back]
$ git fetch -p            # update remote branches

während dieser Woche waren Sie gerade weg, und der Zweig featureX wurde gelöscht (vermutlich in seine Entwicklungslinie zusammengeführt und dann nicht mehr benötigt). Zu diesem Zeitpunkt befinden Sie sich in einem lokalen Zweig, featureX, der so eingestellt ist, dass er den entfernten Zweig Origin/featureX verfolgt, aber es gibt keinen Origin/featureX mehr.

In diesem Fall haben Sie jedoch einen lokalen Zweig master tracking Origin/master, wenn noch kein Origin/master yet vorhanden ist. Sobald Sie es erstellt haben (über den Push, der das Repository nicht leer macht), wird das Problem behoben. Dies wurde nur angezeigt, weil Sie standardmäßig mit master beginnen, auch wenn die Fernbedienung leer ist und noch keine master hat.

34
torek

Als Neuling bei git/github bin ich auf dieses Problem gestoßen, nachdem ich ein komplett leeres Repo auf github und git cloned auf local erstellt habe. Einschließlich der Warnung vor einem leeren Repo. Dann gab ein Commit für eine neu erstellte lokale Datei die Nachricht in Bezug auf "Upstream ist weg".

Folgendes geht davon aus, dass man das Remote-Repo verwenden möchte, daher müsste der Upstream eingestellt werden:

Ich dachte, hinzuzufügen, dass github einige Befehle bei der Erstellung des leeren Repo vorgeschlagen. Der kritische wäre dort der git Push -u Origin master (nach init, add (für eine Datei), commit und remote add Origin <url>). Dadurch wird der lokal vorhandene Master an das Remote-Github-Repo übertragen.

Der Schalter -u zu Push setzt den Upstream (lange Version ist --set-Upstream) auf github. Ich muss zugeben, dass der Rest der git-Push-Manpage für diesen Switch mystisch bleibt Ich ... Da wird der Local nicht auf dem neuesten Stand oder erfolgreich geschoben. 

Die Nachricht ist nicht mehr vorhanden, da der Hauptzweig jetzt auch im Remote-Repo verfügbar ist.

3
R. Maurer

Ich hatte dieselbe Fehlermeldung mit github. Das eigentliche Problem war, dass ich der Einladung zum Repository nicht zugestimmt hatte. Der Idiot dachte, ich hätte keine Rechte für das Repo.

0