git lokalen master-branch gestoppt tracking-remotes/origin/master, kann nicht schieben
Gerade als ich dachte, ich habe den Dreh git checkout -b newbranch - commit/commit/commit git checkout master git merge newbranch - git rebase -i master git push workflow in git, etwas explodierte, und ich sehe keinen Grund dafür.
Hier ist der Allgemeine workflow, der für mich gearbeitet hat in der Vergangenheit:
# make sure I'm up to date on master:
$ git checkout master
$ git pull # k, no conflicts
# start my new feature
$ git checkout -b FEATURE9 # master @ 2f93e34
Switched to a new branch 'FEATURE9'
... work, commit work commit work commit...
$ git commit -a
$ git checkout master
$ git merge FEATURE9
$ git rebase -i master # squash some of the FEATURE9 ugliness
Ok, so weit; nun, was ich erwarten, zu sehen-und normalerweise nicht zu sehen sind -, ist dies:
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
Aber stattdessen sehe ich nur "nothing to commit (working directory clean)", keine "Ihr Zweig ist vor 'origin/master' by 1 commit.", und git pull zeigt diese Seltsamkeit:
$ git pull
From . # unexpected
* branch master -> FETCH_HEAD # unexpected
Already up-to-date. # expected
Und git branch -a-v zeigt dies:
$ git branch -a -v
FEATURE9 3eaf059 started feature 9
* master 3eaf059 started feature 9
remotes/origin/HEAD -> origin/master
remotes/origin/master 2f93e34 some boring previous commit # should=3eaf059
git branch zeigt deutlich, dass momentan bin ich auf * master und git log zeigt eindeutig, dass die master (local) ist bei 3eaf059, während remotes/origin/HEAD -> remotes/origin/master hängen geblieben ist wieder auf die Gabel.
Idealerweise würde ich gerne wissen, wie die Semantik der wie ich den bekommen haben könnte, aber ich würde dich für einen Weg, um meine arbeiten zu kopieren tracking das remote-master wieder & Holen Sie sich den beiden wieder zu synchronisieren ohne Geschichte. Danke!
(Hinweis: ich re-geklont, die repo in ein neues Verzeichnis und manuell neu angewendet die änderungen, und alles hat gut funktioniert, aber ich will nicht, dass das der standard-workaround.)
Nachtrag: Der Titel sagt "kann nicht schieben", aber es gibt keine Fehlermeldung. Ich bekomme nur die "up to date" - Antwort, obwohl git branch -a-v zeigt, dass die lokalen master vor /remotes/origin/master. Hier ist die Ausgabe von git pull und git remote -v, beziehungsweise:
$ git pull
From .
* branch master -> FETCH_HEAD
Already up-to-date.
$ git remote -v
origin [email protected]:proj.git (fetch)
origin [email protected]:proj.git (push)
Nachtrag 2: Es sieht aus, als wenn mein local master konfiguriert ist, um push auf der Fernbedienung, aber nicht zu ziehen von ihm. Nach for remote in 'git branch -r | grep -v master '; do git checkout --track $remote ; done
, hier ist, was ich habe. Es scheint, dass ich nur brauchen, um Meister ziehen von remotes/origin/master wieder, nicht?
$ git remote show origin
* remote origin
Fetch URL: [email protected]:proj.git
Push URL: [email protected]:proj.git
HEAD branch: master
Remote branches:
experiment_f tracked
master tracked
Local branches configured for 'git pull':
experiment_f merges with remote experiment_f
Local refs configured for 'git push':
experiment_f pushes to experiment_f (up to date)
master pushes to master (local out of date)
- Könntest du die Ausgabe von
git remote -v
zu Ihrer Frage. - Auch Sie Frage Titel bezieht sich auf Probleme mit
push
, aber Sie haben keine Informationen über Fehlermeldungen mitpush
. - Sie müssen vorsichtig sein mit dem Rebase Zweige, die track-Fernbedienungen (d.h. Ihre
master
Zweig), denn das wird die Geschichte umzuschreiben, und es ist möglich, verwechseln entweder sich selbst oder Ihre remote-repository. Wenn Sie wollen, squash begeht, möchten Sie vielleicht, um Sie squash auf dem Zweig vor der Zusammenführung, es zu meistern, bis Sie besser vertraut sind mit dem, was es tut. - Gute Beratung. Mein Ziel war es, eine Reihe von zusätzlichen arbeiten, die auf dem feature-branch, dann merge in master, dann "Noise" der commit-log, bevor Sie durch quetschen viele der feature-commits in 2 -3 aussagekräftige Nachrichten. Das würde mir die (chaotisch) granulare Geschichte lokal, während ich würde nicht zu füge es auf den rest des Teams. Gibt es einen besseren workflow zu erreichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine
git pull
hast du eigentlich tun willst eingit push
?Aus irgendeinem Grund
git pull
ist das "ziehen" von Ihrem aktuellen Verzeichnis, ich vermute, Sie möchten, ziehen ausremotes/origin/HEAD
.Welche Ausgabe keine
git push origin
produzieren?[Nachtrag von Paul]: Dies führte mich zu der richtigen Antwort, also ich bin, zu akzeptieren. Die zusätzlichen Schritte, die es dauerte, um herauszufinden, was Los war, waren:
Danach, die lokale master-tracking-remotes/origin/master wieder. Vielen Dank an Peter Bauer für den Hinweis, hab mir hier!
git push origin
Vorschlag gemacht mich versuchengit pull origin
, die zu "Sie fragte pull vom remote 'origin', aber nicht angeben, eine Niederlassung. Da dies nicht der konfigurierten Standard-Fernbedienung für den aktuellen branch, müssen Sie eine Verzweigung auf der Kommandozeile."git pull origin master
brachte einige Sachen nach unten, und "git push origin" gab mir "b1f6453..3b2d904 master -> master". Irgendeine Idee, wie man die pull/push-to track remote wieder korrekt?Tun einige Untersuchung nach Peter und Nick die Kommentare led:
Hoffentlich kann ich diesen post als eine Antwort, ohne es zu akzeptieren (wenn nicht werde ich löschen muss & steckte es in einen Kommentar, oder die ursprüngliche Frage). Tun...
...hab
branch.master.remote
zu=origin
wieder, aber es wird nicht erklärt, wie es kam "nicht" auf den ersten Platz.Wenn jemand erklären kann, sauber:
a) wie meine lokale "pfusch" repo bekommen haben könnte in einem solchen Zustand angesichts der workflow in meiner Frage, und
b) die richtige Abfolge von Aktionen, um wieder in sync sicher (da die remote-Kopf haben könnte, erweiterte in der Zwischenzeit), möchte ich bemerken, dass als die akzeptierte Antwort, wie ich denke, es wäre sehr nützlich für andere in dieser situation.