¿Cómo recuperar mis cambios de algunos commits al índice?

Este es mi historial de commit superior:

5e1aaf7 final commit message 0356c0a add Toyota to Cars.txt 5498f0f add some cities to Cities.txt e811024 add Cities.txt 

Necesito get cambios de esos commits al índice y comprometerlos con uno o más commits.

Si lo entiendo correctamente, quiere volver a hacer las últimas cuatro confirmaciones y trabajar en ellas como un cambio. git reset --soft HEAD~4

¿Que esta pasando? git reset mueve la label de bifurcación actual a posiciones arbitrarias ( git reset -- , confusamente, hace algo completamente diferente) así que git reset HEAD~4 dice que para mover la twig actual hacia atrás 4 commits.

--soft , --hard , --mixed , --merge y --keep controlan qué sucede con el índice y la copy de trabajo. --soft deja solo el índice y la copy de trabajo, por lo que aún tendrás el viejo HEAD en el disco para trabajar. --hard restablece tanto el índice como la copy de trabajo a la nueva confirmación, algo así como el checkout y checkout . El rest lo dejo para leer los documentos.

Si solo quieres aplastarlos, harás git rebase -i HEAD~4 y git rebase -i HEAD~4 el command squash .

 pick e811024 add Cities.txt s 5498f0f add some cities to Cities.txt s 0356c0a add Toyota to Cars.txt s 5e1aaf7 final commit message 

Si quisiera modificarlos individualmente, debería rebase -i y usar el command de edición. Solo sé que puede causar conflictos que tendrás que resolver.

 e e811024 add Cities.txt e 5498f0f add some cities to Cities.txt e 0356c0a add Toyota to Cars.txt e 5e1aaf7 final commit message 

Si solo quisieras alterar el último commit, harías los cambios y harías git commit --amend . Si solo quieres volver a hacer el último commit, harías que git reset --soft HEAD~ . Esto mueve la twig actual hacia atrás una confirmación pero deja la copy de trabajo sola. Lo tengo alias para networkingo .

Si desea recuperar un file de una confirmación específica, puede hacer esto:

 git checkout e811024 file/to/restre 

Esto revisará el file seleccionado de commit e811024