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.
Para esta pregunta, digamos que se llama a mi superproyecto y se llama superyal submódulo subby. (Entonces es 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 presentarlas como una pregunta).
Mi rama maestra de superytiene la etiqueta v1.0del proyecto git subbyreferenciada como un submódulo. La rama de superyllamado one.oney cambió la referencia del submódulo para apuntar a la etiqueta v1.1de subby.
Puedo trabajar dentro de cada una de estas ramas sin problemas, pero si trato de actualizar la one.onerama con los cambios de la masterrama, recibo algunos conflictos y no sé cómo resolverlos.
Básicamente, después de correr un git pull . mastertiempo en la subbyrama, parece que crea submódulos adicionales.
Antes de la extracción / fusión, obtengo la respuesta deseada git submodulede la one.onerama:
$ 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 extracción, agrega submódulos adicionales cuando ejecuto 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ódulos no deseados y confirmo mis conflictos y cambios? ¿O hay algún parámetro que pueda usar con mi original git pullque ignore mis submódulos?
fuente

added by us: ../Mono.Cecilengit statusperogit addygit rmfallidas conMono.Cecil: needs merge, pathspec 'Mono.Cecil/' did not match any filesporque era simplemente una carpeta vacía y git en realidad sólo trata los archivos.git checkoutme dioMono.Cecil: needs merge, error: you need to resolve your current index first,git submodule updatedioSkipping unmerged submodule Mono.Cecilygit checkout master Mono.CecilFINALMENTE lo arregló. Problema básico: lagit statussugerencia es incorrecta, ¡así que elige una rama y toma su copia de la carpeta concheckout!git checkout --ours SUBMODygit add SUBMODentre otros, pero finalmente el hacergit checkout master SUBMODarreglado el conflicto. Este comentario probablemente debería ser una respuesta, no un comentario ... :)Bueno, técnicamente no está gestionando conflictos con submódulos (es decir, mantener esto pero no eso), pero encontré una manera de continuar trabajando ... y todo lo que tuve que hacer fue prestar atención a mi
git statussalida y restablecer los submódulos:Eso restablecería el submódulo a la confirmación previa a la extracción. Que en este caso es exactamente lo que quería. Y en otros casos donde necesito los cambios aplicados al submódulo, me encargaré de aquellos con los flujos de trabajo de submódulo estándar (maestro de pago, extraer la etiqueta deseada, etc.).
fuente
Luché un poco con las respuestas a esta pregunta y tampoco tuve mucha suerte con las respuestas en una publicación SO similar . Así que esto es lo que funcionó para mí, teniendo en cuenta que en mi caso, el submódulo fue mantenido por un equipo diferente, por lo que el conflicto provino de diferentes versiones de submódulos en master y mi rama local del proyecto en el que estaba trabajando:
git status: tome nota de la carpeta del submódulo con conflictosRestablezca el submódulo a la versión que se confirmó por última vez en la rama actual:
git reset HEAD path/to/submoduleEn este punto, tiene una versión libre de conflictos de su submódulo que ahora puede actualizar a la última versión en el repositorio del submódulo:
Y ahora puedes
commithacerlo y volver al trabajo.fuente
Primero, encuentre el hash que desea que su submódulo haga referencia. entonces corre
eso me ha funcionado para que mi submódulo tenga la referencia hash correcta y continúe con mi trabajo sin tener más conflictos.
fuente
Tuve este problema con
git rebase -i origin/masteruna rama. Quería tomar la versión maestra de la referencia del submódulo, así que simplemente hice:git reset master path/to/submoduley entonces
git rebase --continueEso resolvió el problema para mí.
fuente
Obtuve ayuda de esta discusión. En mi caso el
trabajó para mi :)
fuente
Bueno, en mi directorio principal veo:
Así que acabo de hacer esto
fuente