¿Y como puede indicar a git que rama fusionar o dar prioridad?

Gustavo Farfan

Gustavo Farfan

Pregunta
studenthace 4 años

¿Y como puede indicar a git que rama fusionar o dar prioridad?

3 respuestas
para escribir tu comentario
    Julio César Zaravia Paredes

    Julio César Zaravia Paredes

    studenthace 4 años

    ¡Hola! Que útil pregunta. A decir verdad, si hay manera de dar prioridad a los cambios de una rama al momento de hacer

    git merge
    . Reproduzcamos el caso:

    1. Inicializamos un repositorio con
      git init
      como de costumbre, luego creamos el archivo ++registros.txt++.

    1. Aplicamos
      git add
      y
      git commit
      para guardar las modificaciones.

    1. Creamos una rama adicional a master llamada ++secundaria++. Aplicando
      git branch secundaria
      .

    En este momento tenemos dos ramas: master y secundaria, y un archivo llamado registros.txt en cada rama, ++este archivo por ahora está vacío++.

    1. Editamos el archivo registros.txt de la rama master y agregamos un registro en la línea 1, luego guardamos.

    1. Aplicamos
      git add
      y
      git commit
      para guardar las modificaciones.

    1. Nos movemos a la rama secundaria. Aplicamos

      git checkout secundaria
      .

    2. Editamos el archivo registros.txt de la rama secundaria y agregamos un registro diferente en la línea 1, luego guardamos.

    1. Aplicamos

      git add
      y
      git commit
      para guardar las modificaciones.

    2. Nos movemos de regreso a la rama master.

    En este momento tenemos dos ramas: master y secundaria, y un archivo llamado registros.txt en cada rama, ++este archivo tiene un registro en la línea uno, este registro es diferente en cada rama++.

    Imaginemos que aplicamos

    git merge secundaria
    desde la rama master (solo imaginémoslo porque no lo haremos), es evidente que obtendremos un error que deberemos solucionar manualmente. El error obtenido sería similar a esto:

    Entonces, ++¿Qué pasa si ante cada

    git merge
    quiero dar prioridad a una rama sobre otra?++ Es aquí donde deberemos usar el argumento ++
    -X ours
    o
    -X theirs
    .++

    Si aplicamos

    git merge
    secundaria
    -X ours
    le estamos diciendo a git que, ante un conflicto, como el anterior mencionado, elija mantener automáticamente los registros de nuestro archivo en la rama actual, para este caso: ++la rama master++.

    Si aplicamos

    git merge
    secundaria
    -X theirs
    le estamos diciendo a git que, ante un conflicto, elija mantener automáticamente los registros de nuestro archivo en la rama que “estamos trayendo”, para este caso: ++la rama secundaria++.

    1. Para continuar con el ejemplo, apliquemos
      git merge
      secundaria usando el argumento
      -X theirs
      para dar prioridad a los registros que “estamos trayendo” de la rama secundaria
      y descartar los registros de la rama master.

    1. Ahora veamos el contenido del archivo luego de priorizar.

    Como puedes ver, el

    git merge
    no ha arrojado ningún conflicto, y en el contenido del archivo encontramos los registros del archivo en la rama secundaria.

    Ahora, puede ser que te venga una pregunta a la mente: ++¿Cuándo debería usar esto?++ Y, la respuesta es la respuesta más usada en nuestro campo: DEPENDE. Quizá depende de las políticas de uso de git de tu equipo, quizá dependa de la decisión de algún manager bajo circunstancias específicas o un largo conjunto de “quizás”.

    ++Lo importante es que ya sabes que es posible y cómo hacerlo++, espero que te sirva si llegas al caso de necesitarlo. ¡Saludos!

    Carolina Coronado Alderete

    Carolina Coronado Alderete

    studenthace 4 años

    Hola, así es, no hay prioridades. Tu eliges que se queda y que se va :D ¡Suerte!

    Carlos Eduardo Gomez García

    Carlos Eduardo Gomez García

    teacherhace 4 años

    Hola, realmente como tal no es como que puedas darle prioridad a una rama, ya que esto podría traer problemas de que unas partes del código funcionan y otras no, es por eso que git te manda a resolver los conflictos manualmente, porque de esa manera te aseguras de que tu código funcione correctamente después de resolver el conflicto.

Curso de Git y Github [Empieza Gratis]

Curso de Git y Github [Empieza Gratis]

Deja de versionar tus proyectos usando tu propio sistema de control de versiones. Mejor usa Git, el sistema de control de versiones por excelencia que utiliza la industria tecnológica. Aprende a trabajar con git, conceptos básicos, clonar un repositorio y gestionar tus proyectos alojándolos en tu repositorio local y en GitHub.

Curso de Git y Github [Empieza Gratis]
Curso de Git y Github [Empieza Gratis]

Curso de Git y Github [Empieza Gratis]

Deja de versionar tus proyectos usando tu propio sistema de control de versiones. Mejor usa Git, el sistema de control de versiones por excelencia que utiliza la industria tecnológica. Aprende a trabajar con git, conceptos básicos, clonar un repositorio y gestionar tus proyectos alojándolos en tu repositorio local y en GitHub.