Confirmar solo parte de los cambios de un archivo en Git
Cuando hago cambios en un archivo en Git, ¿cómo puedo confirmar solo algunos de los cambios?
Por ejemplo, ¿cómo podría confirmar solo 15 líneas de las 30 que se han modificado en un archivo?
Puedes usar:
git add --patch <filename>
o para abreviar:
git add -p <filename>
Git dividirá su archivo en lo que cree que son "trozos" sensatos (porciones del archivo). Luego le planteará esta pregunta:
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
Aquí hay una descripción de cada opción:
- yprepara este trozo para el próximo compromiso
- nNo prepares este trozo para el próximo compromiso.
- qabandonar; No pongas en escena a este galán ni a ninguno de los galán restantes.
- apresentar este trozo y todos los trozos posteriores en el archivo
- dno presente este trozo ni ninguno de los trozos posteriores en el archivo
- gselecciona un trozo para ir
- /buscar un trozo que coincida con la expresión regular dada
- jdeja a este galán indeciso, ver el siguiente galán indeciso
- Jdeja a este galán indeciso, mira el siguiente galán
- kdeja a este galán indeciso, ver el galán indeciso anterior
- Kdeja a este galán indeciso, ver el galán anterior
- sdividir el trozo actual en trozos más pequeños
- eeditar manualmente el trozo actual
- Luego puedes editar el fragmento manualmente reemplazando
+
/-
por#
(gracias veksen )
- Luego puedes editar el fragmento manualmente reemplazando
- ?ayuda del trozo de impresión
Si el archivo aún no está en el repositorio, primero puede hacerlo git add -N <filename>
. Después puedes continuar con git add -p <filename>
.
Después, puedes utilizar:
git diff --staged
para comprobar que has realizado los cambios correctosgit reset -p
para quitar del escenario a los trozos agregados por errorgit commit -v
para ver su confirmación mientras edita el mensaje de confirmación.
Tenga en cuenta que esto es muy diferente al git format-patch
comando, cuyo propósito es analizar los datos confirmados en .patch
archivos.
Referencia para el futuro: Git Tools - Puesta en escena interactiva
Puedes usar git add --interactive
o y luego ( no ); consulte Modo interactivo en la página de manual de git-add o simplemente siga las instrucciones.git add -p <file>
git commit
git commit -a
Modern Git también tiene git commit --interactive
(y git commit --patch
, que es un acceso directo a la opción de parche en la confirmación interactiva).
Si prefieres hacerlo desde la GUI, puedes usar git-gui . Simplemente puede marcar los fragmentos que desea incluir en la confirmación haciendo clic derecho sobre ellos y seleccionando:
Hunk etapa para comprometerse
Si desea agregar solo ciertas líneas del trozo, también puede seleccionar las líneas que desee, hacer clic derecho sobre ellas y:
Líneas de escenario para comprometerse
Personalmente lo encuentro más fácil que usar git add -i
. Otras GUI de git, como QGit o GitX, también pueden tener esta funcionalidad.