Tengo un superproyecto git que hace referencia a varios submódulos y estoy tratando de bloquear un flujo de trabajo para que el resto de los miembros de mi proyecto trabajen dentro.¿Cómo manejo los conflictos con los submódulos de git?
Para esta pregunta, digamos que mi superproyecto se llama supery
y el submódulo se llama subby
. (Entonces hay una simplificación de lo que estoy tratando de hacer ... En realidad, no estoy usando las ramas para las versiones, pero pensé que sería más fácil plantearlo como una pregunta.)
Mi rama principal de supery
tiene la etiqueta v1.0
del proyecto git subby
al que se hace referencia como submódulo. La rama de supery
llamó a one.one
y cambió la referencia del submódulo para que apunte a la etiqueta v1.1
de subby
.
Puedo trabajar dentro de cada una de estas ramas sin problemas, pero si trato de actualizar la rama one.one
con cambios de la rama master
recibo algunos conflictos y no sé cómo resolverlos.
Básicamente después de ejecutar un git pull . master
mientras estaba en la rama subby
, parece que crea submódulos adicionales.
Antes del tirón/fusión, me da la respuesta deseada de git submodule
de la rama one.one
:
$ git checkout master
$ git submodule
qw3rty...321e subby (v1.0)
$ git checkout one.one
$ git submodule
asdfgh...456d subby (v1.1)
Pero después de la retirada, se añade submódulos adicionales cuando corro git submodule
:
$ git pull . master
Auto-merged schema
CONFLICT (submodule): Merge conflict in subby - needs qu3rty...321e
Automatic merge failed; fix conflicts and then commit the results.
$ git submodule
qw3rty...321e subby (v1.0)
asdfgh...456d subby (v1.1)
zxcvbn...7890 subby (v1.1~1)
¿Cómo elimino/ignoro las referencias de submódulo no deseadas y confirmo mis conflictos y cambios? ¿O hay un parámetro que pueda usar con mi git pull
original que ignorará mis submódulos?
Gracias por arrojar algo de luz sobre la pregunta . Eso tiene mucho sentido para mí ahora y el comando de reinicio funciona perfectamente para mi situación anterior. Pero, ¿cuáles serían los comandos para aceptar la ref del submódulo de la rama maestra y tirar la ref al submódulo de la rama actual? Sé cómo manejar conflictos normales, pero después de tres días de buscar en la web, no puedo encontrar un ejemplo de código que no sea rm -r. Y estoy empezando a pensar que hay una razón para que los ejemplos no existan; Los submódulos están tan abstraídos del superproyecto que debes gestionar cada transición. – Tyler
FINALMENTE! ¡Una respuesta! He 'agregado por nosotros: ../ Mono.Cecil' en' git status' pero 'git add' y' git rm' fallaron con 'Mono.Cecil: necesita fusionar, pathspec 'Mono.Cecil /' no coincidía con ninguna archivos' porque solo era una carpeta vacía y git solo realmente maneja los archivos. 'git checkout' me dio' Mono.Cecil: necesita fusionarse, error: primero debes resolver tu índice actual', 'git submodule update' dio' Salto de submódulos no combinados Mono.Cecil' y 'git checkout master Mono.Cecil' FINALMENTE arreglado. Problema básico: la sugerencia de 'git status' es incorrecta, ¡así que elija una rama y tome su copia de la carpeta con' checkout'! – IBBoard
@ El comando de IBBoard me ayudó con esta situación - Intenté 'git checkout--us SUBMOD' y' git add SUBMOD' y otros, pero finalmente, 'git checkout master SUBMOD' solucionó el conflicto. Este comentario probablemente debería ser una respuesta, no un comentario ... :) –