git: Empujar confirmaciones individuales, reordenar con rebase, confirmaciones duplicadas

Quiero enviar varias confirmaciones individuales a un repositorio remoto de git. Seguí la respuesta de Geoff encontrada aquí para hacerlo:

¿Cómo puedo enviar una confirmación específica a un control remoto y no las confirmaciones anteriores?

Los commits que quiero impulsar no están en la cabeza, así que primero tengo que reordenar los commits usando rebase y utilicé estas instrucciones para hacerlo:

http://gitready.com/advanced/2009/03/20/reorder-commits-with-rebase.html

Esencialmente he hecho:

git clone
git commit
git commit
...
git pull
git rebase -i HEAD~3
git push origin <SHA>:master

Tengo errores al hacer esto. Así que comencé a profundizar en el problema. Descubrí que hay confirmaciones duplicadas en mi registro si hago una segunda extracción de git después de la reorganización, por ejemplo:

git clone
git commit
git commit
...
git pull
git log --pretty=format:"%h - %an : %s" // log before rebasing
git rebase -i HEAD~3
git pull
git log --pretty=format:"%h - %an : %s" // log after rebasing
git pull 
git log --pretty=format:"%h - %an : %s" // log after rebasing after pulling

Entonces publiqué esta pregunta:

git: confirmaciones duplicadas después de una rebase local seguida de extracción

La respuesta de Roger allí me llevó a esta pregunta: ¿Por qué veo confirmaciones duplicadas después de rebase y extracción?

Desde arriba, el registro antes de rebasar se ve así:

84e4015 - Me : Local Commit 3
0dbe86a - Me : Local Commit 2
d57ba2a - Me : Merge branch 'master' of remote repository
a86ea35 - Me : Local Commit 1 before reordering
2fc4fe7 - Remote User 2 : Remote Commit 2
b7a8656 - Remote User 1 : Remote Commit 1
8ce80fc - Me : Merge branch 'master' of remote repository

Y el registro después de rebasar se ve así:

cf1ff7b - Me : Local Commit 3
cd14463 - Me : Local Commit 2
b9d44fb - Me : Local Commit 1 after reordering
9777c56 - Remote User 2 : Remote Commit 2
a2d7d8b - Remote User 1 : Remote Commit 1
8ce80fc - Me : Merge branch 'master' of remote repository

Observe que los 2 commits originales 2fc4fe7 y b7a8656 tienen nuevos SHA; 9777c56 y a2d7d8b. Creo que este es el comienzo del problema.

Ahora, después de hacer otro git pull, el registro se ve así:

e8e1a85 - Me : Merge branch 'master' of remote repository
cf1ff7b - Me : Local Commit 3
cd14463 - Me : Local Commit 2
b9d44fb - Me : Local Commit 1 after reordering
9777c56 - Remote User 2 : Remote Commit 2
a2d7d8b - Remote User 1 : Remote Commit 1
2fc4fe7 - Remote User 2 : Remote Commit 2 // duplicate 2
b7a8656 - Remote User 1 : Remote Commit 1 // duplicate 1
8ce80fc - Me : Merge branch 'master' of remote repository

Observe que las confirmaciones remotas ahora están duplicadas y que los SHA originales de las confirmaciones remotas, 2fc4fe7 y b7a8656, han regresado.

En la respuesta de Roger, dijo que parecía culpa de otras personas presionando para burlarse y que estaban rebajando sus compromisos ya presionados. Pero creo que es mi culpa por rebasar localmente un commit empujado.

¿Es esto porque volví a crear un commit que ya había sido enviado al control remoto? Si es así, ¿qué debería haber hecho para evitar esto? Necesito volver a redactar mis confirmaciones para poder impulsar una única confirmación. ¿Debería haber usado un sistema de ramificación para hacer esto? Si es así, ¿cómo usaría ramas para resolver este problema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta