¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta