2012-08-31 15 views
15

Sto tentando di aggiungere un sottomodulo già esistente (diverso repository remoto git). Siccome non ho cercato prima come farlo correttamente, penso di aver incasinato il mio repository e ho bisogno di aiuto per ripararlo di nuovo.Aggiungere un sottomodulo che non può essere rimosso dall'indice

Ho già eliminato tutte le sezioni pertinenti da .gitmodules e .git/config riguardanti i sottomoduli che voglio eliminare. Ho anche verificato che non ci sono directory dei moduli nella mia directory .git /.

Tuttavia, quando si esegue il comando git rm --cached path_to_submodule, viene visualizzato il seguente messaggio:

 
fatal: pathspec 'path_to_submodule' did not match any files 

Come il comando precedente non riesce, quando provo ad aggiungere nuovamente lo stesso modulo con le nuove definizioni, l'esecuzione del comando git submodule add [email protected]:repo.git , questo è il messaggio visualizzato:

 
'repo' already exists in the index 
+0

Stavo cercando di aggiungere un indice con lo stesso nome di un file già esistente nell'indice. –

risposta

32

l'unico modo che il messaggio ('repo' already exists in the index) può essere visualizzato è se 'repo' esiste ancora nell'indice (vedi this chapter on submodule):

$ rm -Rf rack/ 
$ git submodule add [email protected]:schacon/rack.git rack 
'rack' already exists in the index 

You have to unstage the rack directory first. Then you can add the submodule: 

$ git rm -r rack 
$ git submodule add [email protected]:schacon/rack.git rack 

Anche se 'rack' non è un modulo, se esiste, dovrebbero impedire la dichiarazione di un modulo con lo stesso nome.

1

Può verificarsi, quando si uniscono con l'errore, la cancellazione manuale delle cartelle di modulo, o di qualcos'altro, come Hallileo Comet

  1. nel file di .gitmodules - eliminare i collegamenti al modulo (un'intera sezione con il nome modulo)

  2. nel file di .git\config - eliminare collegamenti al modulo, come nel precedente passaggio

  3. nella cartella .git\modules - eliminare la cartella con il percorso relativo simile a r percorso elative del modulo "problema"

  4. assicurare, tale cartella di modulo non è esiste più

  5. poi:

    $ git submodule add -f --name <name> <git://path_1.git> <path_2>

    dove: Nome - nome del modulo come u desiderio, può uguale al nome repo; - percorso per sottomodulo fonte repo (vale a dire - github, ecc.) - percorso relativo alla cartella in cui il sottomodulo risiederà

    Questo consente di aggiungere il sottomodulo all'interno del percorso o con il nome che è ancora presente nell'indice, ma non in modo naturale.

non ho trovato alcun metodo per rimuovere questi collegamenti guasti dall'indice, ma quando costretti

1

Se l'uscita aggiungendo un nuovo modulo è:

'FolderName' already exists in the index 

Tip i prossimi comandi

git ls-files --stage 

L'uscita sarà simile a:

160000 d023657a21c1bf05d0eeaac6218eb5cca8520d16 0 FolderName 

Poi, per rimuovere la punta dell'indice cartella:

git rm -r --cached FolderName 

riprovare aggiungere il modulo

+0

grazie che ha funzionato per me –

0

'sottomoduli/uasdk-CLIB' esiste già nell'indice

git rm - r - sottododati cache/uasdk-clib

sottomodulo git aggiungi -b cina/release/16.8.0 -f ssh: //[email protected] sottomoduli/uasdk-clib

Problemi correlati