Tengo dos twigs, foo
y bar
bajo master
en un proyecto que estoy administrando con git. Supongamos que trabajo bajo foo
y luego de terminar con él, fusiono los cambios con el master
. Luego voy a la bar
y repito el process. Pero luego alguien me dice que hay algo que tengo que cambiar en foo
, así que mi primera idea fue repetir nuevamente, pero luego pierdo todo el trabajo hecho bajo la bar
. ¿Cómo logro mi propósito de regresar a una sucursal y cuando me fusiono con el master
no anulo los cambios realizados en la bar
Traté de crear una nueva twig para esos nuevos cambios, pero si este es el enfoque, creo que las twigs son un poco inútiles. Pero creo que git es lo suficientemente inteligente como para hacer lo que quiero.
Contestando con una serie de diagtwigs:
–
crear foo
y bar
off master
después de commit C:
foo / master A ---- B ---- C \ bar
trabajar en foo
y fusionar en master
: ( git checkout master && git merge foo
)
foo D ---- E ---- F / \ (merge-commit) master A ---- B ---- C --------------- G \ bar
Mientras tanto, bar
progresó independientemente …
foo D ---- E ---- F / \ master A ---- B ---- C --------------- G \ bar D' ---- E' ----- F'
Ahora desea actualizar la bar
con los cambios en el master
( git pull origin master
)
foo D ---- E ----------- F / \ master A ---- B ---- C ---------------------- G \ \ bar D' ---- E' ----- F' ---- G' (another merge-commit)
otro cambio comprometido en foo
foo D ---- E ----------- F ---- H / \ master A ---- B ---- C ---------------------- G \ \ bar D' ---- E' ----- F' ---- G'
luego, para sincronizar la bar
con el nuevo foo
( git checkout bar && git pull origin foo
)
foo D ---- E ----------- F ---- H / \ \ master A ---- B ---- C ---------------------- G \ \ \ \ bar D' ---- E' ----- F' ---- G'---- H' (another merge-commit)
luego fusiona la bar
en master
(con master
como twig activa, git merge bar
)
foo D ---- E ----------- F ---- H / \ \ master A ---- B ---- C ---------------------- G -----}-------- I (latest merge-commit) \ \ \ / bar D' ---- E' ----- F' ---- G'---- H' ---
Luego voy a la barra y repito el process
¿Por qué no fusionas master o foo en el bar? Eso no está claro para mí.
Pero luego alguien me dice que hay algo que tengo que cambiar en foo, así que mi primera idea fue repetir nuevamente, pero luego pierdo todo el trabajo hecho bajo la barra de la barra.
¿Qué quieres decir con repetir? Confirma los últimos cambios y finaliza la otra twig.
Además, si realizó cambios que no confirmará, puede usar git stash para almacenar los cambios temporales.
Por favor especifique su pregunta para una ayuda más detallada.
Si su twig foo
y bar
aún no se ha eliminado, puede volver a establecer la base
git checkout master git pull git checkout foo git rebase master git checkout bar git rebase master
Pero, idealmente, si su twig foo
y bar
es una function / problema, solo debería fusionarlos en el maestro cuando esté listo. Si es demasiado grande, divídalo en twigs más pequeñas (anidadas o planas).
No anulo los cambios realizados bajo la barra
esto depende de tus cambios y por qué te importa, fusionas la bar
para master
todos modos. No es asunto del bar
si el trabajo que ha realizado se modifica porque esa function / solución está list (es por eso que la fusiona). De hecho, cuando terminaste una twig de function / arreglo y la fusionaste, idealmente la borras porque está hecha.