2012-08-31 24 views
15

Estoy tratando de agregar un submódulo que ya existía (diferente repositorio remoto de git). Como no busqué antes cómo hacerlo correctamente, creo que he arruinado mi repositorio y necesito ayuda para solucionarlo nuevamente.Agregue un submódulo que no se puede eliminar del índice

Ya he eliminado todas las secciones relevantes de .gitmodules y .git/config con respecto a los submódulos que quiero eliminar. También verifiqué que no hay directorio de módulos dentro de mi directorio .git /.

Sin embargo, cuando ejecuto el comando git rm --cached path_to_submodule, se muestra el siguiente mensaje:

 
fatal: pathspec 'path_to_submodule' did not match any files 

Como falla el comando anterior, cuando intento añadir de nuevo el mismo submódulo con las nuevas definiciones, se ejecuta el comando git submodule add [email protected]:repo.git , este es el mensaje que se muestra:

 
'repo' already exists in the index 
+0

Estaba tratando de agregar un submódulo con el mismo nombre de un archivo ya existente en el índice. –

Respuesta

32

la única manera de que el mensaje ('repo' already exists in the index) se pueden visualizar si es 'repo' todavía existe en el índice (ver 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 

Incluso si 'rack' no es un submódulo, si existe, se evitaría la declaración de un submódulo del mismo nombre.

1

Puede ocurrir, cuando la fusión con el error, eliminación manual de las carpetas del submódulo, o algo más, como Hallileo Comet

  1. en el archivo .gitmodules - eliminar vínculos a submódulo (sección entera con el nombre submódulo)

  2. en el archivo .git\config - eliminar vínculos a submódulo, como en el paso anterior

  3. en la carpeta .git\modules - eliminar la carpeta con la ruta relativa similar a la r ruta elativo del módulo "problema"

  4. asegurar, que la carpeta del submódulo no es existe más

  5. a continuación:

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

    donde: nombre - nombre del submódulo como deseo de u, puede ser igual a su nombre repo; - ruta al repositorio de origen del submódulo (es decir, - github, etc.), - ruta relativa a la carpeta donde residirá el submódulo

    esto le permite agregar el submódulo dentro de la ruta o con el nombre que todavía está presente en el índice, pero no está vivo naturalmente.

yo no encontró ningún método para eliminar estos enlaces muertos de índice, pero cuando se ven obligados

1

Si la salida de añadir un nuevo sub-módulo es:

'FolderName' already exists in the index 

Consejo los siguientes comandos

git ls-files --stage 

La salida será algo similar a:

160000 d023657a21c1bf05d0eeaac6218eb5cca8520d16 0 FolderName 

Entonces, para eliminar la punta índice de carpeta:

git rm -r --cached FolderName 

intentarlo de nuevo agregar el submódulo

+0

gracias que funcionó para mí –

0

'submódulos/uasdk-clib' ya existe en el índice

git rm - r -cached submodules/uasdk-clib

git submódulo add -b china/release/16.8.0 -f ssh: //[email protected] submódulos/uasdk-clib

Cuestiones relacionadas