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 mit push.
  • 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?
InformationsquelleAutor Paul Smith | 2011-03-09
Schreibe einen Kommentar