Confirmar solo parte de los cambios de un archivo en Git

Resuelto freddiefujiwara asked hace 15 años • 30 respuestas

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?

freddiefujiwara avatar Jul 06 '09 09:07 freddiefujiwara
Aceptado

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 )
  • ?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 --stagedpara comprobar que has realizado los cambios correctos
  • git reset -ppara quitar del escenario a los trozos agregados por error
  • git commit -vpara ver su confirmación mientras edita el mensaje de confirmación.

Tenga en cuenta que esto es muy diferente al git format-patchcomando, cuyo propósito es analizar los datos confirmados en .patcharchivos.

Referencia para el futuro: Git Tools - Puesta en escena interactiva

mac avatar Jul 06 '2009 02:07 mac

Puedes usar git add --interactiveo 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

ingrese la descripción de la imagen aquí

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.

Jakub Narębski avatar Jul 06 '2009 11:07 Jakub Narębski