tipos tag remove qué existen etiquetas crear git git-merge git-rebase feature-branch

tag - Cómo combinar los compromisos de git en la rama de desarrollo a una rama de función



tipos de etiquetas en git (2)

Tengo una rama de desarrollo y una rama de función en mi repositorio de git. Agregué un compromiso para desarrollar y ahora quiero que ese compromiso se fusione con mi rama de características. Si hago esto

git checkout feature git merge develop

Termino con un merge commit. Dado que estaré fusionando nuevos compromisos en el desarrollo de mi rama de características con frecuencia, me gustaría evitar todos estos compromisos de fusión innecesarios. Vi una answer que sugería hacer un git rebase develop pero termina rebobinando demasiado mi rama y la rebase falla.

Actualización: Lo que terminé haciendo fue

git checkout feature git merge develop # this creates a merge commit that I don''t want git rebase # this gets rid of the merge commit but keeps the commits from develop that I do want git push

Actualización: Me acabo de dar cuenta de que la confirmación original en el desarrollo tiene un hash diferente cuando fusiono y luego rebase a la rama de características. No creo que eso sea lo que quiero, porque eventualmente fusionaré la característica de nuevo en el desarrollo y supongo que no funcionará bien.


Para integrar una rama en otra, tienes que fusionar o rebase. Debido a que solo es seguro volver a generar las confirmaciones que no están referenciadas en ningún otro lugar (no se combinan con otras sucursales locales, no se envían a ningún control remoto), generalmente es mejor fusionarlas.

Si la rama de tu característica es puramente local, puedes volver a utilizarla para desarrollarla. Sin embargo, lleva tiempo entender cómo funciona el rebase, y antes de que lo haga, es bastante fácil producir compromisos duplicados o eliminados accidentalmente. Las confirmaciones de fusión pueden parecer ruidosas, pero se garantiza que la fusión siempre será segura y predecible.

Para una mejor vista, intente registrar todo junto en un gráfico:

git log --all --graph --oneline --decorate

También vale la pena considerar si realmente necesita las confirmaciones en el develop fusionado en feature . A menudo son cosas que pueden dejarse separadas hasta que la feature se fusione para develop más tarde.

Si encuentra con regularidad que necesita develop código en la feature entonces puede ser una señal de que sus ramas de características son demasiado largas. Lo ideal es que las funciones se dividan de tal manera que se puedan trabajar de forma independiente, sin necesidad de una integración regular en el camino.


Si solo desea una confirmación de la rama develop , puede seleccionarla en su rama feature :

git checkout feature git cherry-pick -x <commit-SHA1>

La confirmación se aplicará como una nueva en la parte superior de su rama (siempre que no genere un conflicto), y cuando vuelva a fusionar la feature , Git se enfrentará sin conflictos.