¿Por qué es "rebase --onto ABC" diferente de "rebase ABC"?
Usando git 2.11,git rebase la documentación dice:
La rama actual se restablece a <upstream> o <newbase> si se suministró la opción --onto. Esto tiene exactamente el mismo efecto que git reset --hard (o). ORIG_HEAD está configurado para apuntar a la punta de la rama antes del reinicio.
Lo entiendo como siupstream
ynewbase
apunta a la misma "referencia base", entonces esto significa que las dos sintaxis de rebase a continuación son equivalentes:
git rebase ABC
git rebase --onto ABC
Aquí está la demo que configuré. Supongamos que la rama actual esFeatureABC
Está perfectamente sincronizado con la rama remota.
#---create two identical branches, behind current branch by 5 commits
(FeatureABC) git branch Demo1-Rebase-ABC HEAD~4
(FeatureABC) git branch Demo2-Rebase-onto-ABC HEAD~4
#---Make a new commit in branch Demo1
git checkout Demo1-Rebase-ABC
echo "Demo of: git rebase FeatureABC Demo1-Rebase-ABC" > ./Demo1_BogusFile.txt
git add ./Demo1_BogusFile.txt
git commit -m "Create file Demo1_BogusFile.txt"
git rebase FeatureABC
Primero, rebobina la cabeza para reproducir tu trabajo encima
... Aplicando: Crear archivo Demo1_BogusFile.txt
git log --oneline -3
muestra que la ramaDemo1-Rebase-ABC
está sincronizado con el HEAD de FeatureABC. Y la confirmación "Crear archivo Demo1_BogusFile.txt" se aplicó correctamente encima.
#---Make a new commit in branch Demo2
git checkout Demo2-Rebase-onto-ABC
echo "Demo of: git rebase --onto FeatureABC Demo2-Rebase-onto-ABC" > ./Demo2_Onto_BogusFile.txt
git add ./Demo2_Onto_BogusFile.txt
git commit -m "Create file Demo2_Onto_BogusFile.txt"
git rebase --onto FeatureABC
No hay información de seguimiento para la sucursal actual. Por favor, especifique contra qué rama desea rebase. Ver git-rebase (1) para más detalles.
git rebase <branch>
Si desea establecer información de seguimiento para esta sucursal, puede hacerlo con:
git branch --set-upstream-to=origin/<branch> Demo2-Rebase-onto-ABC
No entendí el mensaje de advertencia. Pensando que git estaba confundido en los valores predeterminados cuando se usa --onto. Así que solo quiero "ayudar" diciéndole a git la rama actual que quiero reajustar
git rebase --onto FeatureABC Demo2-Rebase-onto-ABC
Primero, rebobina la cabeza para reproducir tu trabajo encima ...
git log --oneline -3
muestra que la ramaDemo2-Rebase-onto-ABC
se convierteidéntico queFeatureABC
. La última confirmación "Crear archivo Demo2_Onto_BogusFile.txt" desapareció y el archivo./Demo2_Onto_BogusFile.txt
esta borrado.
Pregunta: cuál es la razóngit rebase --onto FeatureABC Demo2-Rebase-onto-ABC
no aplicó las nuevas confirmaciones realizadas en elDemo2-Rebase-onto-ABC
¿rama?