2008-11-10 15 views
5

Dopo un po 'di tempo ho voluto aggiornare il mio repository git, e poi qualcosa è andato storto. Qual è la via giusta per uscire da questa situazione?Come aggiornare un repository git contenente un sottomodulo?

[email protected]:~/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 
[email protected]:~/src/psi/ $ git submodule status 
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master) 
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master) 
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master) 
[email protected]:~/src/psi/ $ cd iris 
[email protected]:~/src/psi/iris/ $ cat .git/HEAD 
cf237ef8f3d9dc058dbde47e6973e6388608ce60 

risposta

5

Quando si tratta di git sottomoduli, quasi ogni problema si verifica può essere risolto:

1. deleting the submodule (rm -r iris) 
2. recreating it again (git submodule update) 

Ovviamente se sono state apportate modifiche locali al modulo questo li eliminare definitivamente, quindi se si avere modifiche locali assicurati di averle prima spinte.

+1

È interessante notare che l'ho provato e che non mi è stato di grande aiuto, ha comunque affermato che "iris" non viene modificato dopo averlo aggiornato da zero. E la cosa più divertente è che il problema è scomparso dopo "git add iris". – mblsha

+1

ha funzionato, ma perché è il modo corretto di gestirlo? –

3

Ho pubblicato un simile question qui su StackOverflow e ho finito per rispondere da solo, ma ho scoperto che l'utilizzo di git reset HEAD iris funzionava per il mio problema con conflitti di sottomodulo.