Cambié varias cosas durante la última hora y las comprometí paso a paso, pero me di cuenta de que olvidé agregar un archivo modificado hace algunas confirmaciones.
El registro se ve así:
GIT TidyUpRequests u:1 d:0> git log
commit fc6734b6351f6c36a587dba6dbd9d5efa30c09ce
Author: David Klein <>
Date: Tue Apr 27 09:43:55 2010 +0200
The Main program now tests both Webservices at once
commit 8a2c6014c2b035e37aebd310a6393a1ecb39f463
Author: David Klein <>
Date: Tue Apr 27 09:43:27 2010 +0200
ISBNDBQueryHandler now uses the XPath functions from XPath.fs too
commit 06a504e277fd98d97eed4dad22dfa5933d81451f
Author: David Klein <>
Date: Tue Apr 27 09:30:34 2010 +0200
AmazonQueryHandler now uses the XPath Helper functions defined in XPath.fs
commit a0865e28be35a3011d0b6091819ec32922dd2dd8 <--- changed file should go here
Author: David Klein <>
Date: Tue Apr 27 09:29:53 2010 +0200
Factored out some common XPath Operations
¿Algunas ideas?

Respuestas:
Uso
git rebase. Específicamente:git stashpara almacenar los cambios que desea agregar.git rebase -i HEAD~10(o la cantidad de confirmaciones que desee ver).a0865...) para editar cambiando la palabrapickal comienzo de la línea enedit. No elimine las otras líneas ya que eso eliminaría los commits. [^ Vimnote]git stash popgit add <file>.git commit --amend --no-edit.git rebase --continueque reescriba el resto de tus commits contra el nuevo.[^ vimnote]: si está utilizando
vim, deberá presionar la Inserttecla para editar y luego Escescribir:wqpara guardar el archivo, salir del editor y aplicar los cambios. Alternativamente, puede configurar un editor git commit fácil de usar congit config --global core.editor "nano".fuente
git add.edit, NO ELIMINE las otras confirmaciones que figuran en el archivo Si lo hace, las confirmaciones se eliminarán y tendrá que seguir estos pasos para recuperarlas.git add .Para "arreglar" una confirmación anterior con un pequeño cambio, sin cambiar el mensaje de confirmación de la confirmación anterior, ¿dónde
OLDCOMMITestá algo así como091b73a:También puede usar
git commit --squash=OLDCOMMITpara editar el antiguo mensaje de confirmación durante el rebase.git rebase --interactiveAparecerá un editor de texto (que se puede configurar ) para confirmar (o editar) la secuencia de instrucciones de rebase . Hay información para cambios de instrucciones de rebase en el archivo; simplemente guarde y salga del editor (:wqenvim) para continuar con la nueva versión.--autosquashpondrá automáticamente las--fixup=OLDCOMMITconfirmaciones en el orden deseado. Tenga en cuenta que--autosquashsolo es válido cuando--interactivese utiliza la opción.^inOLDCOMMIT^significa que es una referencia al commit justo antesOLDCOMMIT.Los pasos anteriores son buenos para verificar y / o modificar la secuencia de instrucciones de rebase , pero también es posible omitir / automatizar el editor de texto de rebase interactivo mediante:
GIT_SEQUENCE_EDITORde un guión .Ver git commit y git rebase . Como siempre, al reescribir el historial de git , solo debe corregir o confirmar los compromisos que aún no ha publicado a nadie más (incluidos los usuarios aleatorios de Internet y los servidores de compilación).
fuente
--autosquashsolo es válido cuando--interactivese usa la opción .git config --global core.editor "pico". Hay varias otras formas de configurar git y / o cambiar el editor predeterminado de su sistema, etc.Con git 1.7, hay una manera muy fácil de usar
git rebase:organizar sus archivos:
crear un nuevo mensaje de confirmación y reutilizar la confirmación de su confirmación "rota"
anteponer
fixup!en la línea de asunto (osquash!si desea editar commit (mensaje)):use
git rebase -i --autosquashpara arreglar su confirmaciónfuente
You asked me to rebase without telling me which branch you want to rebase against, and 'branch.master.merge'y si luego usogit rebase -i --autosquash, obtengo unanooplínea de asunto, volviendo a asignar la confirmación en sí misma. ¿Alguna idea de lo que hago mal?git rebase -i --autosquash HEAD~10Puede probar una
rebase --interactivesesión para modificar su confirmación anterior (siempre que no haya enviado esas confirmaciones a otro repositorio).fuente