¿Hay alguna forma de reajustar una única confirmación de una rama a otra rama?
Tengo esta estructura de rama:
-- -- -- -- -- (Master)
\
-- -- -- -- -- XX (Feature-branch)
Todo lo que quiero hacer es volver a basar la última confirmación Feature-branchen master y deshacer Feature-branchuna confirmación.
-- -- -- -- -- XX (Master)
\
-- -- -- -- -- (Feature-branch)
¿Cómo puedo hacer eso?

Respuestas:
Puede elegir XX para dominar.
Y elimine la última confirmación de la rama de características con git reset.
fuente
cherry-pickhizo aparecer como si se hubieran eliminado de la ubicación anterior y se hayan creado en la nueva ubicación. Supongo que rebase se habría encargado de eso, pero a estas alturas he empujado corriente arriba, así que no puedo probar eso. En cualquier caso, tenga cuidado si se encuentra en una situación similar.Feature-branchal origen, deberá hacerlo,git push -f origin Feature-branchyaFeature-branchque ahora se considera que está 1 confirmación detrás deorigin/Feature-branch.Esto dice "reajustar el rango de confirmaciones entre la última antes de la rama y la rama (es decir, la confirmación XX) en la punta de la rama maestra"
Después de que esta
branchsugerencia de operación se mueva en la confirmaciónXX, entonces desea volver a establecerla conQue dice "restablecer la sugerencia de la rama a la confirmación antes de su estado anterior"
Entonces, una selección de cerezas es una solución más simple ...
fuente
--ontoantes, por lo que es posible que esté haciendo algo mal. Por cierto, el OP dijo rebase, pero parece que quiere hacer una selección.En realidad, es bastante sencillo de hacer. La solución es hacer una rebase interactiva y "eliminar" todas las confirmaciones que no desea incluir en la rebase.
git rebase -i <target_branch>¿Dóndetarget_branchestá la rama en la que desea volver a basarse?Luego editará el archivo que se abre y
picklas confirmaciones que desea ydrop(odpara abreviar) todas las confirmaciones que no desea traer.fuente
La respuesta de @Charles es correcta. De todos modos terminé usando esto tantas veces, sobre todo para reajustar una configuración específica en un proyecto
que creo un nuevo comando para ello:
$ gato ~ / bin / git-rebaseshot COMPROMISO = $ 1 DEST = $ {2: -HEAD} git rebase $ {COMMIT} ^ $ {COMMIT} --en $ DESTnormalmente desea autocompletar los nombres de las ramas para ese comando, así que agréguelo obteniendo esta función (agregando a .bashrc o .profile):
_git_rebaseshot () { __gitcomp_nl "$ (__ git_refs)" }git autocomplete lo buscará
puedes usar este comando así:
Cuando divide las características correctamente, las posibilidades son infinitas.
Supongo que esto es lo que le gusta hacer a la gente de las colchas .
este comando funcionará de todos modos con cualquier sha / ref que proporciones:
fuente
Aquí tienes otra opción:
Los comandos se ven así:
No es un comando de rebase, no, pero es un rebase en espíritu.
fuente