¿Puedo aplastar solo 2 commits a la vez?

Cuando trato de reajustar de manera interactiva (aplastar) varios commits en uno solo aprieta los últimos dos commits, así que termino haciendo squash varias veces.

Estoy usando el tree de fonts, pero he intentado hacerlo desde la console con los mismos resultados. ¿Algunas ideas?

Tratar –

$ git rebase -i HEAD~4 

entonces

 pick 01d1124 commit msg 1 squash 6340aaa commit msg 2 squash ebfd367 commit msg 3 squash 30e0ccb commit msg 4 

guarda y sal de tu editor

Puedes hacer lo mismo en Sourcetree –

http://kwnetzwelt.net/wordpress/archives/2440

La readaptación (interactiva) networkinguce técnicamente solo dos confirmaciones a la vez, simplemente porque el llamado "script de rebase" que normalmente se solicita editar antes de que git rebase aplica una acción a una única confirmación a la vez.

Sin embargo, esto no cambia el resultado porque, lógicamente, no hay diferencia entre aplastar N commits a la vez o hacer esto commit-by-commit. En tu script de rebase, solo eliges la acción "squash" (también lee en "fixup" -puede ser más útil que "squash") para una serie de commits adyacentes, y luego git rebase funciona así:

  1. Obtenga la confirmación marcada como "squash". Aplástalo al commit anterior, reescribiéndolo efectivamente con el nuevo contenido aplicado (como con git apply ).
  2. Dado ese nuevo estado, vaya al paso 1. 😉

Tenga en count que también existe la opción de command-line --squash de git merge . Este aplasta varios commits a la vez de verdad.

Dado que su sucursal apunta al último de los commits que desea aplastar, puede usar este truco:

 git reset --soft <some older commit> git commit --amend 

Ahora ha reemplazado <some older commit> por una nueva que contiene todo entre los dos, más su contenido.

Squash

Esto es exactamente para lo que es la rebase interactiva.

git rebase -i @~x donde x representa la cantidad de confirmaciones que deseas aplastar.

A continuación, se abrirá un cuadro de dialog para usted y puede elegir confirmaciones y lo que desea hacer con cada confirmación.

enter image description here