¿Cómo comprometer un file a la vez usando Git?

Digamos que hay varios files modificados y solo quiero un file comprometido cada vez. ¿Como hacer eso? Dado un ejemplo con estado se ve a continuación. ¡¡Gracias!!

Ex:

> git status # modified: file01.txt # modified: file02.txt # modified: file03.txt # modified: file04.txt # modified: file05.txt 

Hay algunas maneras, pero la más simple es probablemente:

 git commit file01.txt git commit file02.txt ... 

Cualquier ruta que liste después del command de confirmación se cometerá independientemente de si están configurados para comprometerse. Alternativamente, puede organizar cada uno y luego confirmar:

 git add file01.txt git commit git add file02.txt git commit ... 

Use git add -p seguido de git commit . git add -p le pide cada cambio, ya sea para escenificarlo para la confirmación, lo cual es muy conveniente.

También puede usar -p con git reset y git checkout .

git add -p descrito por la respuesta de daf es bueno, pero para un enfoque más directo para seleccionar y elegir, realmente me gusta:

git add -e

Genera el parche apropiado, luego lo carga en su editor preferido para que pueda editarlo como desee. Cuando guarda el file y sale del editor, y solo los cambios realizados por su versión editada del parche se agregan al índice.

Si accidentalmente cierra el editor sin hacer cambios, probablemente quiera usar " get reset HEAD y luego comenzar de nuevo.

 git add file01.txt git stash git commit -m'commit message' git stash pop 

repetir.

En el tema de organizar cambios parciales dentro de un file, vale la pena señalar que varios editores de text tienen soporte para hacerlo de una manera más agradable que cualquiera de las opciones de command-line.

Utilizo Magit para Emacs, que usa pulsaciones de teclas únicas para avanzar o retroceder en los lockings, boost o disminuir la granularidad y organizar o desglosar el trozo actual. También puede marcar una región manualmente y poner en escena (o eliminar) solo esa región.

Creo que hay complementos similares para vim y otros editores / IDE también.