Buscar..


Observaciones

Vale la pena señalar que la puesta en escena tiene poco que ver con los "archivos" en sí mismos y todo que ver con los cambios dentro de cada archivo dado. Preparamos archivos que contienen cambios, y git rastrea los cambios como confirmaciones (incluso cuando los cambios en una confirmación se realizan en varios archivos).

La distinción entre archivos y confirmaciones puede parecer menor, pero comprender esta diferencia es fundamental para comprender funciones esenciales como cherry-pick y diff. (Vea la frustración en los comentarios sobre la complejidad de una respuesta aceptada que propone a cherry-pick como una herramienta de administración de archivos ).

¿Qué es un buen lugar para explicar conceptos? ¿Está en los comentarios?

Conceptos clave:

Un archivo es la metáfora más común de los dos en tecnología de la información. La mejor práctica dicta que un nombre de archivo no cambie a medida que cambia su contenido (con algunas excepciones reconocidas).

Un commit es una metáfora que es única para la gestión del código fuente. Los compromisos son cambios relacionados con un esfuerzo específico, como una corrección de errores. Los compromisos a menudo implican varios archivos. Una sola corrección de errores menores puede implicar ajustes a las plantillas y css en archivos únicos. A medida que se describe, desarrolla, documenta, revisa e implementa el cambio, los cambios en los archivos separados se pueden anotar y manejar como una sola unidad. La única unidad en este caso es el commit. Igualmente importante, centrarse solo en la confirmación durante una revisión permite que las líneas de código sin cambios en los diversos archivos afectados se ignoren de forma segura.

Puesta en escena de un solo archivo

Para preparar un archivo para cometer, ejecute

git add <filename>

Puesta en escena de todos los cambios en los archivos

git add -A
2.0
git add .

En la versión 2.x, git add . realizará todos los cambios a los archivos en el directorio actual y todos sus subdirectorios. Sin embargo, en 1.x solo incluirá archivos nuevos y modificados, no archivos eliminados .

Use git add -A , o su comando equivalente git add --all , para realizar todos los cambios en los archivos en cualquier versión de git.

Archivos borrados del escenario

git rm filename

Para eliminar el archivo de git sin quitarlo del disco, use el indicador --cached

git rm --cached filename

Unstage un archivo que contiene cambios

git reset <filePath>

Complemento interactivo

git add -i (o --interactive ) le dará una interfaz interactiva donde podrá editar el índice, para preparar lo que desea tener en el próximo compromiso. Puede agregar y eliminar cambios a archivos completos, agregar archivos sin seguimiento y eliminar los archivos que se rastrean, pero también puede seleccionar la subsección de cambios para colocar en el índice, seleccionando fragmentos de cambios para agregar, dividir esos fragmentos o incluso editar el diff . Muchas herramientas de confirmación gráficas para Git (como p. Ej. Git git gui ) incluyen dicha característica; esto podría ser más fácil de usar que la versión de línea de comandos.

Es muy útil (1) si ha realizado cambios entrelazados en el directorio de trabajo que desea colocar en confirmaciones por separado, y no todos en una única confirmación (2) si se encuentra en medio de una rebase interactiva y desea dividir también gran compromiso.

$ git add -i
           staged     unstaged path
  1:    unchanged        +4/-4 index.js
  2:        +1/-0      nothing package.json

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now>

La mitad superior de esta salida muestra el estado actual del índice dividido en columnas escalonadas y no escalonadas:

  1. index.js ha agregado 4 líneas a index.js y se han eliminado 4 líneas. Actualmente no está en escena, ya que el estado actual informa "sin cambios". Cuando este archivo se convierta en un escenario, el bit +4/-4 se transferirá a la columna de estadios y la columna no escalonada leerá "nada".
  2. package.json ha tenido una línea agregada y ha sido puesta en escena. No hay más cambios ya que se ha efectuado como se indica en la línea "nada" debajo de la columna sin etapas.

La mitad inferior muestra lo que puedes hacer. Ingrese un número (1-8) o una letra ( s , u , r , a , p , d , q , h ).

status muestra la salida idéntica a la parte superior de la salida anterior.

update permite realizar más cambios en las confirmaciones preparadas con sintaxis adicional.

revert devolverá la información de confirmación por etapas a HEAD.

add untracked permite add untracked que no fueron rastreadas anteriormente por el control de versiones.

patch permite seleccionar una ruta de una salida similar al status para un análisis posterior.

diff muestra lo que se comprometerá

quit sale del comando.

help presenta help adicional sobre el uso de este comando.

Añadir cambios por hunk

Puede ver qué "trozos" de trabajo se pondrían en escena para confirmar usando la marca de parche:

git add -p

o

git add --patch

Esto abre un aviso interactivo que le permite ver las diferencias y decidir si desea incluirlas o no.

Stage this hunk [y,n,q,a,d,/,s,e,?]?
  • Y etapa este trozo para el próximo compromiso
  • n no escenifiquen este hunk para el próximo commit
  • q renuncio no ponga en escena este trozo o cualquiera de los trozos restantes
  • una etapa este trozo y todos los tíos posteriores en el archivo
  • D No hagas este hunk o cualquiera de los tíos posteriores en el archivo.
  • g selecciona un trozo para ir a
  • / búsqueda de un trozo que coincida con la expresión regular dada
  • j dejar este trozo indeciso, ver el siguiente trozo indeciso
  • J dejar este trozo indeciso, ver siguiente trozo
  • k deja este trozo indeciso, ver anterior trozo indeciso
  • K deja este trozo indeciso, ver trozo anterior
  • s dividir el trozo actual en trozos más pequeños
  • e editar manualmente el trozo actual
  • ? ayuda del trozo de impresión

Esto facilita la captura de cambios que no desea confirmar.

También puede abrirlo a través de git add --interactive y seleccionando p .

Mostrar cambios por etapas

Para mostrar los trozos que están en escena para cometer:

git diff --cached


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow