Git macht genau das, was es tun soll. git submodule update
setzt Ihr Submodul auf das, was der aktuelle Commit im Parent-Repo spezifiziert, an dem das Submodul sein sollte. Auf diese Weise können Sie eine andere Verzweigung, ein älteres Commit oder ein älteres Tag auschecken und dann git submodule update
ausführen, und das Submodul wird auf das festgelegt, was diese Referenz erwartet, damit Ihre gesamte Lösung ihre Abhängigkeiten erfüllt.
Was Sie tun müssen, ist:
cd mysubmoduledir
git fetch
git checkout master # or any other branch that you need the latest of
git merge origin/master
cd - # go back to the top repo
git status # should show that your submodule changed
git add mysubmoduledir
git commit -m "Updated my solution to use latest sub project."
eine kürzere Version ist:
cd mysubmoduledir
git pull # assumes you are already on the branch you need to be on
cd -
git commit -am "Updated submodule" # assumes you had no other modified files
Das Wort "Update" ist nicht das beste für dieses Submodul Befehl. Es bedeutet wirklich "zeigen Sie das Submodul auf das Commit, das das Commit des Parent-Repos erwartet".
Aktualisieren eines Submoduls zu einem anderen Commit (muss nicht die neueste sein) erfordert, dass Sie in dieses Verzeichnis cd, manipulieren Sie es wie ein regulärer Git Repo, so dass die aktuelle Commit ist was Sie wollen, dann wieder raus und Übernehmen Sie diese Änderung auf dem Repo der obersten Ebene.
Was für ein lächerlicher Name für einen Befehl ?! Es sollte offensichtlich sein, git submodule etadpu –
Nachdenken über diese "git submodule ilikepancakes" würde wahrscheinlich genauso viel Sinn machen. Und wenn jemand anderer Meinung ist, lies bitte eine kluge Präsentation über das Design von Kernel-Space-Apis: http://man7.org/conf/lca2013/Why_kernel_space_sucks-2013-02-01-printable.pdf –
Weitere Details zur Verwendung von 'git Submodul ': https://chrisjean.com/git-submodules-adding-using-removing-and-updating/ –