En la última hora más o menos he modificado archivos
A
ATest
B
BTest
Para asegurarme de que mis mensajes de confirmación se alineen con el cambio real, confirme A
con una descripción. Desafortunadamente, no lo he incluido ATest
en ese compromiso.
Mientras tanto, todavía no están comprometidos B
y BTest
.
¿Cuál es la mejor forma de proceder en este momento? Me gustaría:
- ¿Revertir la confirmación anterior sin afectar mis archivos actualmente no enviados?
- ¿Agregar otro archivo con la misma descripción a la confirmación anterior?
Respuestas:
Para agregar un nuevo archivo a la confirmación anterior:
Puede usarlo
git commit --amend --no-edit
si no desea cambiar el mensaje de confirmación.fuente
git rebase -i
para reordenar las confirmaciones y fusionar la confirmación de archivo nuevo con la otra confirmación. Eso podría ser material para una pregunta separada.git rebase -i
que sugiere @DavidZ, todo lo que tiene que hacer es mover la nueva confirmación justo debajo de la que desea combinar y cambiar la palabra de la nueva confirmación a ensquash
lugar depick
git reset
), Luego prepare el que desea agregar, modifique la confirmación y luego vuelva a preparar todos los archivos.Aquí hay un divertido diagrama de flujo 1 que también es sorprendentemente útil: da la recomendación correcta tanto para la pregunta original como para la enmienda "¿Y si no fuera la última confirmación?" pregunta.
1 Tomado de http://justinhileman.info/article/git-pretty/
fuente
Agregar un archivo a una confirmación anterior
Si ya ha introducido la rama en la que está trabajando, consulte primero las páginas de manual . En particular, tenga en cuenta:
Sin embargo, si no ha empujado su rama, prepárese para entrar en la zona de peligro .
Encuentra el hash de confirmación
Primero, necesita saber el hash de confirmación de la confirmación que desea agregar. Esto se muestra mediante
git log
. De hecho, desea especificar la confirmación antes de la que desea agregar. (Puede considerarlo como el índice de inicio del segmento de confirmaciones que desea modificar). Puede asegurarse de tener la confirmación correcta ejecutandogit log -1 HEAD~n
. Donde 'n' es un número entero que incrementa hasta que tenga la confirmación correcta. O podrías contar, no realmente.Pero, si cuenta, al menos confirme que tiene el compromiso correcto con
git log -1 HEAD~5
o cualquiera que sea su conteo. NO debería ver la confirmación a la que desea agregar.PELIGRO , je
Ahora estás listo para correr
git rebase -i HEAD~5
. O cualquiera que sea su hash de confirmación. Esto abrirá su editor de texto favorito y un archivo para editar. El archivo es la lista de tareas pendientes para el comando rebase. Los comentarios en el archivo le dicen qué opciones tiene. Simplemente busque la línea con la confirmación a la que desea agregar, y en esa línea cambie 'elegir' a 'editar'. Ahora guarde y cierre el archivo.La rebase se detendrá una vez que alcance la confirmación que le dijo que editara. Ejecute a
git status
para ver la información adicional que proporciona. Organice sus archivos para agregarlos a la confirmacióngit add .
o cualquiera que sea el nombre de archivo.Entonces, hazlo
git commit --amend
. Esto modificará la confirmación que eligió editar.Finalmente, corre
git rebase --continue
.En caso de duda, en Linux puede obtener más información leyendo los documentos de salida de
man git-rebase
ogit --help rebase
.fuente
git log
para encontrar su compromiso y copie su hash, luego usegit rebase -i hash^
para volver a basar el compromiso anterior al suyo.