Commits können nicht von einem Git-Submodul gepusht werden?

Lesezeit: 3 Minuten

Ich habe ein einfaches Projekt mit einem Untermodul.

$ git submodule
 964737623a362f6303e87ec41f2c7090c8c2c093 lib/mongodb-php-odm (heads/master-1-g9647376)

Ich habe Änderungen an diesem Submodul vorgenommen und sie festgeschrieben, kann sie aber nicht auf GitHub übertragen.

$ cd lib/mongodb-php-odm
$ git branch
* (no branch)
  master
$ git remote -v
origin  [email protected]:colinmollenhour/mongodb-php-odm.git
$ git ls-remote .
964737623a362f6303e87ec41f2c7090c8c2c093    HEAD
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/heads/master
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/remotes/origin/HEAD
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/remotes/origin/master
$ git push origin master
Everything up-to-date

Ich verstehe nicht, warum es “Alles aktuell” sagt, weil das Commit 964737 nicht auf Github gepusht wurde. Wahrscheinlich habe ich etwas falsch gemacht, aber ich habe keine Ahnung, was das sein könnte.

Wie pushe ich das neueste Commit in diesem Submodul zu Github?

Es scheint, dass Sie sich auf keinen Zweig festgelegt haben, dh Ihr Commit ist nicht Teil eines Zweigs. Erstellen Sie an der Stelle, an der Sie stehen, einen Zweig, starten Sie dann gitk, um ihn mit dem Master zu vergleichen, und wählen Sie dann je nach Bedarf Rosinen aus oder rebasen Sie ihn neu.

  • Danke, das hat mich auf den richtigen Weg gebracht. Hier sind die Schritte, die ich genau unternommen habe und die wie ein Zauber funktionierten. Sieht jetzt ziemlich einfach aus … git checkout -b temp; Git Kassenmeister; git merge temp; git branch -d temp; Git-Push-Ursprungsmeister;

    – ColinM

    15. Dezember 2010 um 6:22 Uhr


  • Dies ist im Allgemeinen der Zustand, in dem sich ein Submodul befindet. Wenn ein Git-Submodulbefehl einen bestimmten Commit auscheckt, tut er dies im getrennten HEAD-Modus (kein Branch ausgecheckt, nur der spezifische Commit).

    – Kaskabel

    15. Dezember 2010 um 13:28 Uhr

  • was zu tun ist, wenn Sie sich auf keinen Zweig festlegen ist ein guter Artikel, um diese Situation zu lösen.

    – Ian Dunn

    15. August 2012 um 17:00 Uhr

  • @ColinM, ich denke, Sie sollten Ihren Kommentar in eine Antwort verschieben, da dies die vollständige Lösung ist. Das hat mir geholfen, genau das gleiche Problem zu lösen! Vielen Dank

    – Juan Carlos Moreno

    25. Januar 2014 um 7:11 Uhr


Benutzer-Avatar
cdunn2001

@ColinM, ich denke, Sie sollten Ihren Kommentar in eine Antwort verschieben, da dies die vollständige Lösung ist. Das hat mir geholfen, genau das gleiche Problem zu lösen! Danke – Juan Carlos Moreno

Das mache ich hier.

Wie Scheffer sagte, Sie befinden sich in einem “HEAD-less”-Commit. Wie ColinM sagte, können Sie dieses Commit wieder zusammenführen Meister so was:

cd lib/mongodb-php-odm
git checkout master
git merge HEAD@{1}
git push origin master

EDIT: Verwenden HEAD@{1} anstelle eines temporären Zweigs oder Tags ist einfacher, da keine Bereinigung erforderlich ist. Der Ausdruck HEAD@{1} bedeutet den vorherigen Wert des HEAD, der in diesem Fall der neue Commit auf dem Headless-Zweig wäre.

  • Bitte erläutern Sie, was Sie tun und wie das Problem dadurch gelöst wird.

    – Barmar

    23. August 2014 um 2:59 Uhr

  • @Barmar, git-submodules checkt einen bestimmten Commit aus, keinen Branch, also hinterlässt es Sub-Repos mit “getrennten Köpfen”. Diese Schritte (vorgeschlagen von ColinM) führen das aktuelle Commit in die master Ast vor dem Schieben.

    – cdunn2001

    10. Januar 2015 um 1:43 Uhr


1186380cookie-checkCommits können nicht von einem Git-Submodul gepusht werden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy