git rebase -i para confirmaciones específicas

Tengo una twig con algunas confirmaciones que me gustaría volver a establecer de forma interactiva. Sin embargo, después de tirar y fusionar ahora hay otros commits intercalados con el mío, así que no puedo hacer algo como git rebase -i HEAD~3

¿Es posible hacer una rebase interactiva al elegir compromisos individuales? Algo así como git rebase -i 23duirs 3eujsfe ...

Otra posibilidad– Si simplemente ejecuto git rebase -i creo que es posible cortar y pegar mis líneas de compromiso para ser consecutivas, y squash a partir de ahí, ¿es correcto? ¿Existe una mejor práctica para hacerlo, para minimizar la posibilidad de conflictos con los compromisos no relacionados allí?

Dado este

 pick <unrelated a> pick A pick <unrelated b> pick B pick <unrelated c> 

definitivamente puedes hacer

 pick <unrelated a> pick <unrelated b> pick <unrelated c> pick A squash B 

Siempre que su compromiso no esté realmente relacionado con los otros cambios, esto funcionará perfectamente.

Rebasar después de una fusión es un dolor en git.

Generalmente trato de evitar este problema, al no fusionar el trabajo de los demás, sino que busco y rebase

 git fetch upstream git rebase upstream/master 

(También puedes usar git pull --rebase upstream master , pero esto tiene el inconveniente de no actualizar tus remotes/upstream/master tracking branch, que git fetch sí; por lo tanto, prefiero fetch && rebase lugar de pull --rebase ).

De esta forma, mis compromisos siempre están al tanto de todo en master, hasta que mi desarrollo esté listo, luego abro una request de extracción con un historial limpio sin fusiones, es decir, en cualquier momento, últimos n commits en la twig en la que estoy trabajando , son mis compromisos, y puedo volver a networkingactarlos fácilmente, aplastarlos, etc.

La forma más fácil de modificar algunos commits antiguos es git rebase -i , y el parámetro que pasas a git rebase -i es un commit-ish único; todos los commits más nuevos que la confirmación proporcionada se mostrarán en la pantalla de rebase interactiva. No sé de ninguna manera para que esta pantalla muestre algunos commits más nuevos que el param.

La alternativa para cambiar las confirmaciones antiguas es git filter-branch , pero es mucho más complicado de usar.