Git
Español ▾ Topics ▾ Latest version ▾ git-add last updated in 2.44.0

NOMBRE

git-add - Añadir contenido de un fichero al índice

SINOPSIS

git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
	  [--edit | -e] [--[no-]all | -A | --[no-]ignore-removal | [--update | -u]] [--sparse]
	  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
	  [--chmod=(+|-)x] [--pathspec-from-file=<fichero> [--pathspec-file-nul]]
	  [--] [<especificación-de-ruta>…​]

DESCRIPCIÓN

Éste comando actualiza el índice usando el contenido actual encontrado en el árbol de trabajo, para alistar el contenido preparado para la siguiente confirmación. Típicamente agrega el contenido actual a las rutas existentes como un todo, pero con algunas opciones puede usarse también para agregar contenido con sólo una parte de los cambios hechos a los ficheros del árbol de trabajo, o quitar rutas que ya no existen en el árbol de trabajo.

El "índice" contiene una instantánea del contenido del árbol de trabajo, y dicha instantánea se toma como el contenido para la siguiente confirmación. Por eso después de hacer cualquier cambio al árbol de trabajo, y antes de ejecutar el comando commit, se debe usar el comando add para agregar cualquier fichero nuevo o modificado al índice.

Éste comando puede ser ejecutado varias veces antes de una confirmación. Sólo agrega el contenido de los ficheros especificados al momento que el comando add es ejecutado; si quieres que cambios subsecuentes sean incluidos en la siguiente confirmación, entonces debes correr git add nuevamente para agregar el nuevo contenido al índice.

El comando git status se puede usar para obtener un conjunto de los ficheros con cambios que están preparados para la siguiente confirmación de cambios.

El comando git add no agregará ficheros ignorados predeterminados. Si cualquier fichero ignorado fue explícitamente especificado en la línea de comandos git add fallará listando los ficheros ignorados. Ficheros ignorados alcanzados por una recursión de directorio o por un glob realizado por Git (entrecomilla tus globs antes que el shell) serán silenciosamente ignorados. Se puede usar el comando git add para agregar ficheros ignorados con la opción -f (forzar).

Por favor vea git-commit[1] para alternativas para añadir contenido a una confirmación.

OPCIONES

<especificación-de-ruta>…​

Ficheros para agregar contenido. Se pueden proporcionar globs (ej. *.c) para agregar todos los ficheros coincidentes. También se puede proporcionar un nombre de directorio inicial (ej. dir para añadir dir/fichero1 y dir/fichero2) para actualizar el índice para coincidir con el estado actual del directorio como un todo (ej. especificando dir registrará no sólo el fichero dir/fichero1 modificado en el árbol de trabajo, un fichero dir/fichero2 agregado al árbol de trabajo, pero también a fichero dir/fichero3 eliminado del árbol de trabajo). Nótese que versiones antiguas de Git solían ignorar ficheros eliminados; usar la opción --no-all si se quiere agregar ficheros nuevos o modificados pero ignorar los eliminados.

Encontrará más detalles sobre la sintaxis de <especificación-de-ruta> en la entrada pathspec de gitglossary[7].

-n
--dry-run

Realmente no añade los ficheros. Sólo muestra si existen o se ignorarán.

-v
--verbose

Mostrar más detalles.

-f
--force

Permitir añadir ficheros que normalmente se ignoran.

--sparse

Allow updating index entries outside of the sparse-checkout cone. Normally, git add refuses to update index entries whose paths do not fit within the sparse-checkout cone, since those files might be removed from the working tree without warning. See git-sparse-checkout[1] for more details.

-i
--interactive

Agregar interactivamente al índice contenido modificado en el árbol de trabajo. Se pueden proporcionar argumentos opcionales de ruta para limitar la operación a un subconjunto del árbol de trabajo. Ver "Modo interactivo" para detalles.

-p
--patch

Interactivamente elige pedazos de parche entre el índice y el árbol de trabajo y los agrega al índice. Esto le da al usuario la oportunidad de revisar la diferencia antes de agregar contenido modificado al índice.

Esto ejecuta efectivamente add --interactive, pero omite el menú inicial del comando saltando directamente al subcomando patch. Ver “Modo interactivo” para detalles.

-e
--edit

Abre diff vs el índice en un editor y permite al usuario editarlo. Después de cerrar el editor, ajusta las cebeceras de los pedazos y aplica el parche al índice.

La intención de ésta opción es seleccionar y elegir líneas del parche a aplicar, o incluso para modificar el contenido de las líneas a ser preparadas. Esto puede ser mas rápido y mas flexible que usar el selector de pedazos interactivo; sin embargo, es fácil confundirse uno mismo y crear un parche que no aplica al índice. Ver EDITANDO PARCHES a continuación.

-u
--update

Actualiza el índice justo donde ya tiene una entrada que coincide con <especificación-de-ruta>. Esto tanto elimina como modifica entradas de índice para coincidir el árbol de trabajo, pero no agrega ficheros nuevos.

Si no se proporciona <especificación-de-ruta> cuando se usa la opción -u, todos los ficheros rastreados en árbol de trabajo entero son actualizados (versiones antiguas de Git solían limitar la actualización al directorio actual y sus subdirectorios).

-A
--all
--no-ignore-removal

Actualiza el índice no sólo donde el árbol de trabajo tiene ficheros coincidentes con <especificación-de-ruta> sino también donde el índice ya tiene una entrada. Esto agrega, modifica, y elimina entradas del índice para que coincida con el árbol de trabajo.

Si no se proporciona <especificación-de-ruta> cuando se usa la opción -A, todos los ficheros en el árbol de trabajo entero son actualizados (versiones antiguas de Git solían limitar la actualización al directorio actual y sus subdirectorios).

--no-all
--ignore-removal

Actualiza el índice agregando ficheros nuevos que son desconocidos por el índice y ficheros modificados en el árbol de trabajo, pero ignora ficheros que han sido eliminados del árbol de trabajo. Esta opción es una no-operación cuando no se usa <especificación-de-ruta>.

Esta opción es primordialmente para ayudar a los usuarios acostumbrados a versiones antiguas de Git, donde "git add <especificación-de-ruta>…​" era un sinónimo de "git add --no-all <especificación-de-ruta>…​", ej. ficheros eliminados ignorados.

-N
--intent-to-add

Registra sólo el hecho de que la ruta será añadida posteriormente. Una entrada para la ruta es colocada en el índice sin contenido. Esto es útil para, entre otras cosas, mostrar el contenido unstaged de tales ficheros con git diff y confirmándolos con git commit -a.

--refresh

No añade los ficheros. Sólo renueva su información stat() en el índice.

--ignore-errors

Si algunos ficheros no pueden ser agregados por errores al indexarlos, no aborta la operación, sino que continúa agregando los otros. El comando aún deberá salir con un estatus no-cero. A la variable de configuración add.ignoreErrors se le puede asignar true para hacerlo el comportamiento predeterminado.

--ignore-missing

Esta opción sólo puede ser usada junto con --dry-run. Al usar esta opción el usuario puede verificar si alguno de los ficheros dados debería ser ignorado, sin importar si ya están o no presentes en el árbol de trabajo.

--no-warn-embedded-repo

Predeterminadamente, git add advertirá cuando se agregue un repositorio incrustado al índice sin que se use git submodule add para crear una entrada en .gitmodules. Esta opción omitirá la advertencia (ej. si haces operaciones manuales en submódulos).

--renormalize

Aplicar el proceso "clean" de nuevo a todos los ficheros en seguimiento para ser forzados a ser agregados nuevamente al índice. Esto es útil después de cambiar la configuración de core.autocrlf o el atributo text, con el fin de corregir ficheros agregados con finales de línea CRLF/LF equivocados. Esta opción implica -u. Los caracteres CR solos no se tocan, de modo que mientras CRLF corrige a LF, una secuencia CRCRLF solo es parcialmente corregida a CRLF.

--chmod=(+|-)x

Sobreescribir el bit de ejecutable en los ficheros añadidos. El bit de ejecutables sólo se cambia en el índice, los ficheros en disco se dejan sin cambio.

--pathspec-from-file=<fichero>

La especificación de ruta se pasa en <fichero> y no como argumento en la línea de comandos. Si <fichero> es exactamente - entonces se usa la entrada estándar. Los elementos de la especificación de ruta se separan por LF o CR/LF. Los elementos de la especificación de ruta pueden ser entrecomillados como se explica para la variable de configuración core.quotePath (ver git-config[1]). Ver también --pathspec-file-nul y --literal-pathspecs global.

--pathspec-file-nul

Sólo significativo con --pathspec-from-file. Los elementos de la especificación de ruta se separan con el caracter NUL y todos los otros caracteres se toman literalmente (incluyendo saltos de línea y entrecomillados).

--

Este opción puede ser usada para separar las opciones de línea de comandos de la lista de ficheros; útil cuando los nombres de ficheros se pueden confundir por opciones de línea de comandos.

EJEMPLOS

  • Añade el contenido de todos los ficheros *.txt del directorio Documentacion y sus subdirectorios:

    $ git add Documentacion/\*.txt

    Nótese que en éste ejemplo el asterisco * se entrecomilla desde el shell; esto permite al comando incluir ficheros de subdirectorios del directorio Documentacion/.

  • Considera añadir el contenido de todos los scripts git-*.sh:

    $ git add git-*.sh

    Debido a que este ejemplo deja a la shell que expanda el asterisco (ej. estás listando explícitamente los ficheros), no considera subdir/git-foo.sh.

MODO INTERACTIVO

Cuando el comando entra en modo interactivo, muestra la salida del subcomando status, y entonces entra en su ciclo de comando interactivo.

El ciclo del comando muestra la lista de subcomandos disponible, y solicita la entrada "What now>" ("Ahora qué"). En general, cuando el prompt termina con un > simple, sólo puedes elegir una de las opciones dadas y teclear retorno, como en:

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

También se puede escribir s o sta o status en el punto anterior siempre que la elección sea única.

El bucle de comando principal tiene 6 subcomandos (además de help y quit).

status

Esto muestra los cambios entre HEAD y el índice (ej. lo que será confirmado si haces git commit), y entre los ficheros del índice y del árbol de trabajo (ej. lo que podrías preparar adicionalmente usando git add antes de git commit) para cada ruta. Un ejemplo de la salida se vería como:

              staged     unstaged path
     1:       binary      nothing foo.png
     2:     +403/-35        +1/-1 add-interactive.c

Muestra que foo.png tiene diferencias con HEAD (pero es binario, por lo que el conteo de líneas no puede mostrarse) y no hay diferencia entre la copia indexada y la versión del árbol de trabajo (si la versión del árbol de trabajo fuera también diferente se mostraría binary en lugar de nothing). El otro fichero, add-interactive.c tiene 403 líneas adicionadas y 35 líneas eliminadas si confirmas lo que está en el índice, pero el fichero en el árbol de trabajo tiene mas modificaciones (una adición y una eliminación).

update

Esto muestra la información de estado y emite un solicitud de "Update>>". Cuando el prompt termina con doble >> puedes seleccionar más de uno, concatenando con espacio en blanco o coma. También puedes dar rangos. Ej. "2-5 7,9" para elegir 2,3,4,5,7,9 de la lista. Si se omite el segundo número en un rango se toman todos los parches restantes. Ej. "7-" para elegir 7,8,9 de la lista. Puedes usar * para elegir todo.

Lo que escojas estará destacado con un *, así:

           staged     unstaged path
  1:       binary      nothing foo.png
* 2:     +403/-35        +1/-1 add-interactive.c

Para eliminar la selección, prefija la entrada con - como este:

Update>> -2

Tras realizar la selección, responde con una línea vacía para preparar los contenidos de los ficheros del árbol de trabajo de las rutas seleccionadas en el índice de git.

revert

Este tiene una interfaz de usuario muy similar a update, y la información preparada para las rutas seleccionadas son revertidas a lo de la versión de HEAD. Revertir rutas nuevas las deja sin seguimiento.

add untracked

Este tiene una interfaz de usuario muy similar a update y revert, y te permite agregar rutas sin seguimiento al índice.

patch

Esto te permite elegir una ruta de un status como selección. Después de elegir la ruta, se presentan las diferencias entre el índice y el fichero del árbol de trabajo y pregunta si deseas preparar el cambio de cada pedazo. Puedes seleccionar una de las opciones siguientes y teclear return:

y - presentar éste pedazo
n - no presentar éste pedazo
q - salir; no presentar éste pedazo o cualquiera de los restantes
a - presentar éste pedazo y todos los pedazos subsecuentes en el fichero
d - no presentar éste pedazo ni cualquiera de los pedazos subsecuentes en el fichero
g - selecciona un pedazo para llevar a
/ - busca un pedazo que coincida con la expresión regular dada
j - dejar éste pedazo como indeciso, ver el siguiente pedazo indeciso
J - dejar éste pedazo como indeciso, ver el siguiente pedazo
k - dejar éste pedazo como indeciso, ver el pedazo indeciso previo
K - dejar éste pedazo como indeciso, ver pedazo previo
s - divide el pedazo actual en pedazos más pequeños
e - editar manualmente el pedazo actual
? - mostrar ayuda

Después de decidir el destino de todos los pedazos, si hay algún pedazo elegido, el índice es actualizado con los pedazos seleccionados.

Puedes omitir el tener que teclear retorno aquí, configurando la variable interactive.singleKey a true.

diff

Esto te permite revisar lo que será confirmado (ej. entre HEAD y el índice).

EDITANDO PARCHES

Invocando git add -e o seleccionando e desde el selector interactivo de pedazos, abrirá un parche en tu editor; después de salir del editor, el resultado será aplicado al índice. Estás en libertad de hacer cambios arbitrarios al parche, pero nota que algunos cambios pueden dar resultados confusos, o incluso resultar en un parche que no puede ser aplicado. Si quieres abortar la operación por completo (ej. no presentar nada nuevo al índice), simplemente borra todas las líneas del parche. La lista siguiente describe algunas cosas comunes que puedes ver en un parche, y cuáles operaciones de edición hacen sentido con ellas.

contenido añadido

El contenido añadido se representa con líneas que comienzan con "+". Puedes prevenir presentar cualquier añadido eliminándolas.

contenido removido

Contenido removido se representa con líneas comenzando con "-". Puedes prevenir presentar su remoción cambiando el "-" por un " " (espacio).

contenido modificado

Contenido modificado se representa con líneas "-" (que remueven el contenido anterior) seguidas por líneas "+" (añadiendo el contenido reemplazado). Puedes prevenir presentar la modificación cambiando las líneas "-" a líneas " ", y borrando las líneas "+". Cuida que el modificar sólo una mitad de los pares puede introducir cambios confusos al índice.

También se pueden realizar operaciones mas complejas. Pero hay que tener cuidado, dado que el parche es aplicado sólo al índice y no al árbol de trabajo, el árbol de trabajo aparecerá para "deshacer" el cambio en el índice. Por ejemplo, introducir una línea nueva en el índice que no esta ni en HEAD ni en el árbol de trabajo, presentará la línea nueva para confirmar, pero la linea aparecerá para ser revertida en el árbol de trabajo.

Evitar usar estas construcciones, o hacerlo con extrema precaución.

remover contenido intacto

Contenido que no difiere entre el índice y el árbol de trabajo puede ser mostrado en líneas de contexto, comenzando con un " " (espacio). Puedes presentar líneas de contexto para remoción al cambiar el espacio por un "-". El fichero del árbol de trabajo resultante aparecerá para re-añadir el contenido.

modificando contenido existente

Uno puede también modificar líneas de contexto presentándolas para remoción (cambiando " " por "-") y agregando una línea "+" con el contenido nuevo. Similarmente, uno puede modificar líneas "+" por adiciones y modificaciones existentes. En todos los casos, la nueva modificación aparecerá revertida en el árbol de trabajo.

contenido nuevo

Puedes también agregar contenido nuevo que no existe en el parche; simplemente agrega nuevas líneas que comiencen cada una con "+". La adición aparecerá revertida en el árbol de trabajo.

También hay varias operaciones que deberían se evitadas por completo, ya que harán que el parche sea imposible de aplicar:

  • agregando contexto (" ") o removiendo ("-") líneas

  • borrando contexto o removiendo líneas

  • modificando el contenido de contexto o removiendo líneas

CONFIGURACIÓN

Warning

Missing es/includes/cmd-config-section-all.txt

See original version for this content.

Warning

Missing es/config/add.txt

See original version for this content.

GIT

Parte de la suite de git[1]

scroll-to-top