Submodule sind in der Tat "so entworfen": das Superprojekt listet Commit-IDs für alles in den Teilprojekten auf. Aus dem Superprojekt erhalten Sie also jedes Teilprojekt mit einem abgekoppelten HEAD an seiner spezifischen Commit-ID. Diese
ist, warum Sie nicht sehen, Ihre Änderung: Ihr Teilprojekt eine neue auf seinem master
Zweig begehen, aber Ihre Superproject verwendet nicht diesen Zweig (zumindest nicht in direkter Art und Weise).
Was dies bedeutet ist, dass, nachdem Sie gemacht haben und engagiert und haben bereits geschoben, einige Änderungen an einigen Submodul (n), müssen Sie auch, getrennt, um Ihre Superproject bewegen und git sagen, dass diese getrennte Sache- das Superprojekt - sollte nun auf das neue Commit im Teilprojekt mit seiner (neuen) Commit-ID verweisen.
Dies scheint sich geändert zu haben seit dem letzten Mal, wenn ich es tat (1,5/1,6 git), so die alte Methoden- cd
zum Superproject und git add
sorgfältig das Submodul, auch sicher zu sein, kein Schrägstrich im Pfadnamen zu verwenden, wenn Autocomplete wirklich will zu haben, dass /
in dort ist nicht mehr die einzige Methode (obwohl kein Zweifel, es funktioniert immer noch). In diesen Tagen können Sie auch git submodule update --remote
, optional auch --no-fetch
verwenden. Dies erfordert, dass Sie zuerst das Submodul-Update (und seine .git/config
oder .gitmodules
, master
) -dies ist, wo der master
Zweig, oder eine andere Verzweigung, endlich das Bild erneut eingegeben hat).
Sobald Sie das Superprojekt aktualisiert haben, so dass es die neue Commit-ID kennt, müssen Sie das Commit für das Superprojekt durchführen und es dann übernehmen.
Die Pro Git book und this blog posting haben beide zusätzliche Informationen zu Submodulen. Ich persönlich versuche immer noch Submodule zu vermeiden; Ihr "Sobmodules" Nickname war in den git 1.6 Tagen durchaus angemessen und könnte durchaus noch sein, basierend auf diesem Blogbeitrag (der erst Mitte Januar 2016 aktualisiert wurde).
Vielen Dank für diese Antwort. Schätze es wirklich. Ich habe 'submodul update --remote' gemacht und gesehen, dass es nun auf die neue Commit ID zeigt. Aber wie aktiviere ich diese Veränderung? Im Superprojekt, wenn ich 'git add' gebe, bekomme ich das' Nichts spezifiziert, nichts hinzugefügt. Vielleicht wolltest du 'git add' sagen? '. Also was genau soll ich hier hinzufügen? – KR29
Sobald die Commit-ID des Submoduls aktualisiert wurde, sollte sie in der 'git diff'-Ausgabe erscheinen (entweder als Submodul-Commit-ID oder, wenn Sie die benutzerfreundlichere Submodul-Diff-Option eingestellt haben, die Submodul-Protokollzeilen anzeigen) bereit, das Superprojekt zu schieben. Auch das habe ich seit Jahren nicht mehr gemacht, also könnte sich das etwas geändert haben. – torek
Danke nochmal. Ich schob das Submodul und es funktioniert gut. Ich wollte nur sicher sein, bevor ich einen Push mache. – KR29