Si está utilizando esta forma del branch
comando (con punto de inicio), no importa dónde se HEAD
encuentre.
Qué estás haciendo:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Primero, estableces tu HEAD
en la rama dev
,
En segundo lugar, comienzas una nueva rama al confirmar 07aeec98
. No hay bb.txt en esta confirmación (de acuerdo con su repositorio de github).
Si desea iniciar una nueva sucursal en la ubicación que acaba de retirar, puede ejecutar una sucursal sin un punto de inicio:
git branch test
o como otros han respondido, bifurque y pague allí en una sola operación:
git checkout -b test
Creo que puede confundirte el hecho de que 07aeec98
es parte de la rama dev
. Es cierto que este compromiso es un antepasado de dev
, sus cambios son necesarios para alcanzar el último compromiso en dev
. Sin embargo, hay otras confirmaciones que se necesitan para alcanzar las últimas dev
, y no están necesariamente en la historia de 07aeec98
.
8480e8ae
(donde agregó bb.txt) no está, por ejemplo, en el historial de 07aeec98
. Si se bifurca desde 07aeec98
, no obtendrá los cambios introducidos por 8480e8ae
.
En otras palabras: si fusiona la rama A y la rama B en la rama C, luego crea una nueva rama en una confirmación de A, no obtendrá los cambios introducidos en B.
Lo mismo aquí, tenías dos ramas paralelas master y dev, que fusionaste en dev. La ramificación de una confirmación de master (anterior a la fusión) no le proporcionará los cambios de dev.
Si desea integrar permanentemente los nuevos cambios del maestro en sus ramas de funciones, debe fusionarlos master
y continuar. Sin embargo, esto creará confirmaciones de fusión en sus ramas de características.
Si aún no ha publicado sus ramas de características, también se puede reajustar ellos en el maestro actualización: git rebase master featureA
. Esté preparado para resolver posibles conflictos.
Si desea un flujo de trabajo en el que pueda trabajar en ramas de funciones sin compromisos de fusión y aún así integrarse con cambios más nuevos en el maestro, le recomiendo lo siguiente:
- base cada nueva rama de características en una confirmación de maestro
- crear una
dev
rama en un compromiso de maestro
- cuando necesite ver cómo su rama de características se integra con los nuevos cambios en el maestro, combine tanto el maestro como la rama de características en
dev
.
No se comprometa dev
directamente, utilícelo solo para fusionar otras ramas.
Por ejemplo, si está trabajando en la función A y B:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
Fusionar ramas en una dev
rama para comprobar si funcionan bien con el nuevo maestro:
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
Puede seguir trabajando en sus ramas de funciones y seguir incorporando nuevos cambios de las ramas principal y de funciones con dev
regularidad.
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Cuando sea el momento de integrar las nuevas funciones, combine las ramas de funciones ( dev
¡ no !) En master.