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.

Cómo llevar dos ramas con código ligeramente diferente a la misma base.

He estado trabajando en mi proyecto web en mi localhost con xampp y Git. Creé dos ramas en Git: una rama de desarrollador donde desarrollé nuevas características y una rama principal donde fusioné nuevas características desde el desarrollador. Se suponía que la rama principal incluiría el código que se publicaría en mi servidor web tan pronto como estuviera listo para publicar mi proyecto.

Cuando estuve listo para publicarlo en mi servidor web, por supuesto había configuraciones que eran diferentes a las de mi localhost, como la configuración de enlaces, diferentes datos de acceso a la base de datos, y así sucesivamente. Por lo tanto, para que el proyecto funcione, tuve que hacer cambios en mis archivos ubicados en la rama principal.

En un mundo perfecto, sé que tendría solo un archivo de configuración que sería diferente en la rama principal y desarrollador, y el resto del código sería el mismo, desafortunadamente no soy perfecto. Así que ahora tengo en la rama principal y en la rama de desarrollador dos códigos ligeramente diferentes, pero cada vez que quiero incluir una nueva característica en la rama de desarrollador, no puedo simplemente fusionarla con la rama principal, ya que esto llevaría a cambios en la rama principal por código que no debería ser cambiado.

Mi pregunta ahora es, ¿cómo puedo decirle a Git que desde un cierto punto en la rama de desarrollador quiero fusionar los commits nuevamente en la rama principal? Si esto fuera posible, pensé en crear, por ejemplo, nuevas funciones en la rama de desarrollador, hacer commit de esos cambios y fusionar exactamente este commit solamente (y no los anteriores) en la rama principal. ¿El rebase de Git es una posibilidad que podría ayudarme en este caso?

EDICIÓN:
el siguiente flujo de trabajo ayuda a entender mi problema:

1) myFile.php contiene en desarrollador: path=”localhost”;
2) agregar + commit + push al desarrollador
3) cambiar a la rama principal
4) fusionar con desarrollador. Ahora tengo el archivo myFile.php en mi rama principal
5) Estoy cambiando la ruta en este archivo a path=”www……”
6) hacer commit y push en la rama principal
7) cambiar de nuevo a desarrollador
8) Agregar la función myfunc() al archivo myFile.php en la rama de desarrollador
9) hacer commit y push en la rama de desarrollador
10) cambiar a la rama principal
11) fusionar en la rama principal con la rama de desarrollador: ahora en mi rama principal, el archivo myFile.php contiene la nueva función pero también la variable de ruta cambió de nuevo a path=”localhost”: ahora tengo que cambiar esto de nuevo en la rama principal a path=”www….” y hacer nuevamente un commit y push.

Saludos, eMu

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, el comando de rebase en Git puede ayudar con este escenario. Aquí te explico cómo puedes hacerlo:

    1. Cambia a la rama del desarrollador: git checkout developer
    2. Utiliza la opción de rebase interactivo para elegir qué commits quieres incluir en la fusión: git rebase -i master
      • Esto abrirá un archivo donde puedes elegir qué commits de la rama del desarrollador incluir en el rebase. Puedes eliminar cualquier commit que no deseas fusionar en la rama principal.
    3. Guarda y cierra el archivo para iniciar el rebase.
    4. Resuelve cualquier conflicto que pueda surgir durante el rebase.
    5. Una vez completado el rebase, cambia a la rama principal: git checkout master
    6. Fusiona la rama del desarrollador rebasada con la rama principal: git merge developer
    7. Resuelve cualquier conflicto que pueda surgir durante la fusión.

    Al utilizar la opción de rebase interactivo, puedes elegir qué commits fusionar en la rama principal, en lugar de fusionar toda la rama. De esta manera puedes evitar incluir cambios que no deberían estar en la rama principal.

Comments are closed.