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