Git: ¿Cómo elegir la confirmación de una rama y crear una solicitud de extracción para otra rama?

3 minutos de lectura

tengo dos sucursales dev & master. Estoy usando bitbucket.

Necesito seleccionar algunos de los compromisos de la rama de desarrollo.

Luego necesita crear una solicitud de extracción para el master rama.

Como mi dev El entorno tiene tantas cosas, algunas de ellas no pueden fusionarse directamente para master.

Así que toma commit , de dev rama. Tómelos juntos. Crear una solicitud de incorporación de cambios con la que fusionarse master rama.

  • El uso de GIT le permite seleccionar compromisos específicos, por ID de compromiso, independientemente de la rama. Por ejemplo: git cherry-pick

    – Enojado

    8 de julio de 2020 a las 6:27


  • Así que después git checkout dev, git cherry-pick <id 1>, git cherry-pick <id 2>. ¿Cómo crear relaciones públicas para aquellos seleccionados para la rama principal?

    – Poderoso

    8 de julio de 2020 a las 6:30


  • Puede crear una nueva rama en su rama maestra. Elija las confirmaciones deseadas y luego haga un PR para esta nueva rama. En su caso, contendrá sus confirmaciones seleccionadas

    – Enojado

    8 de julio de 2020 a las 6:31


  • Entonces, ¿crearé una nueva rama desde el desarrollador, elegiré esas confirmaciones y fusionaré esa rama o crearé una solicitud de extracción para el maestro?

    – Poderoso

    8 de julio de 2020 a las 6:32


  • No hay fusión involucrada. Cherry-pick tomará las confirmaciones deseadas y las colocará encima de su maestro. Luego puede enviar esos compromisos a la nueva rama y hacer un PR

    – Enojado

    8 de julio de 2020 a las 6:33


Avatar de usuario de MaD
Enojado

Puedes usar

git cherry-pick <commit id>

para elegir confirmaciones específicas

Para cerrar el ciclo y hacer un PR de master. Podemos hacer los siguientes pasos:

Supongamos que está en el master rama:

git checkout -b myNewBranch // this will create a new branch named myNewBranch
git cherry-pick <commitID 1> // this will take the commit with the commit ID 1 and 
                             // attempt to place it on top of the master branch. 
                             // Note however, there might be conflicts to resolve
git cherry-pick <commitID 2> // this will take the commit with the commit ID 2 and place on top of the master branch
git push origin/<some branch name> // will push the changes to remote. Usually origin/<local branch name>

Luego, puede realizar una solicitud de extracción según su plataforma. Entonces puede ser desde la GUI. Ya sea en una plataforma GitHub o DevAzure, etc. En su caso, a través de la GUI de BitBucket.

Nota al margen: los pasos anteriores están hechos para simplificar. También es posible hacer el cherry-pick con una sola línea. Al igual que:

git cherry-pick <commitID 1> <commitID 2>

  • Necesitamos elegir la confirmación de la rama de desarrollo. Entonces creará una nueva rama desde dev. Luego, seleccione la confirmación de ellos. Luego combine esta nueva rama a través de PR para dominar. ¿Correcto?

    – Poderoso

    8 de julio de 2020 a las 8:25


  • Si necesita elegir confirmaciones de desarrollador a maestro. Luego creas una nueva rama en el maestro. Usted elige las confirmaciones de dev. A continuación, envía la rama al control remoto y utiliza el procedimiento de la GUI de Bitbucket para realizar la PR. Como se describe en la respuesta. Si se requiere más ayuda (con respecto a la fusión). Creo que puede encontrar la respuesta aquí de StackOverflow o hacer otra pregunta si no encuentra una respuesta adecuada.

    – Enojado

    8 de julio de 2020 a las 10:09


  • Si la respuesta resolvió tu pregunta. Por favor márcala como la respuesta correcta

    – Enojado

    9 de julio de 2020 a las 5:45

Fork original-repo as "your-repo"

git clone your-repo
cd your-repo
git checkout dev
git pull //to get all your commits to local
git checkout master
git pull //to make sure branch is upto date
git cherry-pick commit-id
git push //commits the cherry-picked commits to the master branch of forked repo

Raise PR from Forked repo "your-repo" master branch to "original-repo" master branch

¿Ha sido útil esta solución?