Come aggiornare un repository git contenente un sottomodulo?
-
07-07-2019 - |
Domanda
Dopo qualche tempo volevo aggiornare il mio repository git, e poi qualcosa è andato storto. Qual è la giusta via d'uscita da questa situazione?
mblsha@siruba:~/src/psi/ $ git status
iris: needs merge
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: src/common.cpp
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# unmerged: iris
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# gupdate.sh
mblsha@siruba:~/src/psi/ $ git submodule status
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master)
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master)
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master)
mblsha@siruba:~/src/psi/ $ cd iris
mblsha@siruba:~/src/psi/iris/ $ cat .git/HEAD
cf237ef8f3d9dc058dbde47e6973e6388608ce60
Soluzione
Quando si tratta di sottomoduli git, quasi tutti i problemi che si incontrano possono essere risolti con:
1. deleting the submodule (rm -r iris)
2. recreating it again (git submodule update)
Ovviamente se hai apportato modifiche locali al tuo sottomodulo questo le cancellerà PERMANENTAMENTE, quindi se hai delle modifiche locali assicurati di averle spinte per prime.
Altri suggerimenti
Ho pubblicato una domande simili qui su StackOverflow e ho finito per rispondere da solo, ma ho scoperto che l'uso di git reset HEAD iris
ha funzionato per il mio problema con i conflitti del sottomodulo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow