El historial de confirmaciones se ve así en remoto y local:

enter image description here

Cometí un error para que 'b' y 'c' se combinen en el punto de 'combinación'. Lo que realmente quiero hacer es crear historia como a - b - c. Sé que debería usar rebase en lugar de fusionar, y ahora he enviado el resultado combinado al servidor. Quiero saber cómo modificar el historial en el control remoto. ¡Gracias!

git
0
itenyh 17 oct. 2018 a las 05:39

2 respuestas

La mejor respuesta

Crea una nueva rama rebase_instead_of_merge con el historial que quieras:

git checkout <commit_hash_for_b>  # checkout the last commit of branch 1
git branch rebase_instead_of_merge
git cherry-pick <commit_hash_for_c>  # cherry-pick all commits of branch 2

Sobrescribe la rama remota origin/some-feature para que apunte a las mismas confirmaciones que tu nueva rama rebase_instead_of_merge. Antes de hacer esto, verifique que sobrescribir el historial en el control remoto no causará problemas de sincronización para nadie más.

git push --force origin rebase_instead_of_merge:some-feature
1
Rory O'Kane 17 oct. 2018 a las 08:03

Probablemente debería no modificar el historial en el control remoto, especialmente si alguien además de usted está usando esta rama. La razón es que si reescribe el historial, puede causar estragos en los demás cuando se sincronizan. Si deseaba el historial a - b - c lineal, esto es lo que debería haber hecho:

remote: -- a -- b
            \
local:       c

Puede cambiar la base de la sucursal local en el control remoto:

git fetch origin
git checkout master
git rebase origin/master

Esto nos dejaría con lo siguiente:

remote: -- a -- b
                 \
local:            c'

Luego, simplemente puede avanzar rápidamente la rama local al control remoto:

git push origin master

Esto daría como resultado que la rama remota tuviera ese historial lineal.

Si no puede tolerar reescribir el historial de la rama remota, todavía le quedan algunas opciones. Podría revertir la confirmación de fusión y luego realizar más confirmaciones además de eso. Pero la fusión seguiría siendo parte de la historia de la sucursal remota. Puede que no tenga sentido ni siquiera intentar hacer esto.

0
Tim Biegeleisen 17 oct. 2018 a las 02:46