2010-02-19 13 views
7

Sto lavorando a un progetto in cui sono presenti numerosi sottomoduli. Ieri, tutto era peachy, l'app era in esecuzione, ecc. Dopo che mi sono imbattuto nello git submodules update questa mattina, ricevo un errore nell'applicazione.Checkout passato commit sottomodello git

$ git submodule update 
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb' 
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e' 

Allora, come posso fare per check-out la versione precedente del modulo (s) mentre aspetto il problema per ottenere fisso? Ho visto diversi riferimenti a soluzioni senza veramente vedere un esempio che menzionava specificamente questo caso.

Grazie!

Edit: bonus se si può anche aiutare a capire/fix (ancora una volta come ottenere il pluginA e pluginB di riferimento teste/master) questo:

$ git submodule status 
49d5cba84dcffc061db69813162d103feef31ecb vendor/plugins/pluginA (49d5cba) 
4f442f0448c1826252933d5af8fb33cd64d76f6e vendor/plugins/pluginB (4f442f0) 
558fd1a762d63562689e58cac50283192fde74d5 vendor/plugins/pluginC (heads/master) 
4feb2c51148ebc4d4f80f9a64b9eabbfde5b13a3 vendor/plugins/pluginD (heads/master) 
19dce61e256b0fc3f05342cdd3e4d21a434c0b87 vendor/plugins/pluginE (heads/master) 
+0

Ho scoperto il problema "bonus" controllando manualmente il master mentre si trovava nella cartella del sottomodulo. 'git checkout master' mentre si trova nella cartella del sottomodulo e poi' git commit' mentre si è nella directory di superprogetto. – Rob

+0

Vedere anche http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC

risposta

2
$ git submodule update 
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb' 
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e' 

significa che hai fatto un pull git, il recupero e la fusione di file e moduli per il vostro progetto.
Lo SHA1 di quei sottomoduli nel progetto upstream (quello che avete tirato di) è cambiato.

Si possono cambiare di nuovo (entro git checkout arefprojectA, quindi cd .. e git add -A; git commit -m "advance submodule to aref") e push (o meno) i sottomoduli rif torna a monte, se si desidera.

Se avete bisogno di sapere che cosa esattamente SHA1 è stato il tuo modulo a prima della modulo aggiornamento, è sufficiente fare un git show previousProjectSHA1 (previousProjectSHA1 essendo la SHA1 precedente prima l'aggiornamento del progetto principale

Si vedrà qualcosa di simile:

new file mode 160000 
index 0000000..4c4c5a2 

That (4c4c5a2) è la SHA1 modulo è necessario ripristinare lo stato precedente.

Vedi git submodule update QUINTA domanda per saperne di più sulla natura dei sottomoduli.

0

Lo stesso è per il primo caso, si va al modulo dir e checkout che cosa mai la versione che vuoi con git checkout <ref>