Eliminar file de commit

Tengo una list de files modificados en el repository git. Hay un file que no quiero comprometer para el momento actual. Puedo:

git commit -a 

Para comprometer todos los files y luego de alguna manera eliminar ese file de la confirmación actual? Después de dicha eliminación, aún debe estar en la list de files no comprometidos.

Quieres hacer esto:

 git add -u git reset HEAD path/to/file git commit 

Asegúrese y haga esto desde el nivel superior del repository; add -u agrega cambios en el directory actual (recursivamente).

La línea key le dice a git que restablezca la versión de la ruta dada en el índice (el área de ensayo para la confirmación) a la versión de HEAD (la confirmación actualmente desprotegida).

Y advertencia anticipada de un getcha para que otros lean esto: add -u etapas de todas las modificaciones, pero no agrega files sin seguimiento. Esto es lo mismo que lo que commit -a hace. Si también desea agregar files sin seguimiento, use add . para recursivamente agregar todo .

git rm --cached lo eliminará del set de commit ("un-adding"); eso suena como lo que quieres.

si ya has empujado tu commit entonces. hacer

 git checkout origin/<remote-branch> <filename> git commit --amend 

Y si no ha presionado los cambios en el server, puede usar

 git reset --soft HEAD~1 

Use escondite; Me gusta esto:

 git add . git reset Files/I/Want/To/Keep git stash --keep-index git commit -a -m "Done!" git stash pop 

Si accidentalmente compromete un file y desea reescribir su historial de git, use:

 git reset HEAD~1 path/to/file git commit -a -m "rollback" git rebase -i HEAD~2 

y squash a los dos primeros commits. Puede escribir un script auxiliar para hacer cualquiera de estos si tiene un set conocido de files que prefiere no confirmar automáticamente.

Tal vez también podría usar el escondite para almacenar temporalmente sus modificaciones en un file de parche y luego volver a aplicarlo (después de un pago para volver a la versión anterior). Esto podría estar relacionado con este otro tema: ¿Cómo extraería un único file (o cambios en un file) de un alijo git? .