es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La historia reescrita parece estar ausente al fusionar una rama después de usar “subtree add”.

He utilizado exitosamente git subtree add para importar un repositorio git externo, con historial, en una nueva carpeta dentro de mi repositorio local.

git subtree add -P <path> <repositorio externo>.git HEAD

Primero había creado una rama en mi repositorio, cuando fusioné de vuelta a nuestra rama principal tuve éxito, pero aunque puedo ver el commit principal agregando todos los archivos, todas las entradas de historial modificadas del repositorio externo parecen estar ausentes.
De hecho, cuando vuelvo a cambiar a mi rama en la cual hice los cambios, estas entradas de historial también parecen estar ausentes. Esto parece especialmente extraño.

Usamos un remoto maestro autoritativo típico (Devops) con cada desarrollador teniendo un clon local, cuando quiero agregar un subárbol, ¿cuál es la forma correcta de llevar esto a la rama principal de origen de nuestro remoto para que todos los demás lo obtengan la próxima vez que hagan pull, y esté incluido en futuras ramas? El historial modificado presumiblemente no cuenta como un commit normal, ¿cómo me aseguro de que no se pierda?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que el subárbol con la historia reescrita se incluya en la rama principal del origen remoto y posteriormente en otros clones de desarrolladores, siga estos pasos:

    1. Envíe los cambios a la rama principal del origen remoto con el subárbol utilizando el siguiente comando:

      git push origin HEAD:<nombre de="" la="" rama="" principal="">

      Esto enviará los cambios a la rama principal del origen remoto.

    2. Diga a los demás desarrolladores que descarguen los cambios ejecutando:

      git fetch

      Esto descargará los cambios realizados en el repositorio remoto.

    3. Para fusionar los cambios en su clon local, pueden ejecutar:

      git merge origin/<nombre de="" la="" rama="" principal="">

      Esto fusionará los cambios del repositorio remoto en su rama local.

    Cabe destacar que la historia reescrita cuenta como un commit, por lo que no debe perderse en el curso normal de las operaciones de Git. Sin embargo, es posible que algunos comandos de Git o herramientas GUI no muestren la historia reescrita como se esperaba. En tales casos, puede ser útil utilizar el comando git log --follow para rastrear la historia de un archivo a medida que se movía y/o editaba.

Comments are closed.