Git
Español ▾ Topics ▾ Latest version ▾ git-add last updated in 2.48.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=<file> [--pathspec-file-nul]] [--] [<pathspec>…​]

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.

The git add command will not add ignored files by default. If any ignored files were explicitly specified on the command line, git add will fail with a list of ignored files. Ignored files reached by directory recursion or filename globbing performed by Git (quote your globs before the shell) will be silently ignored. The git add command can be used to add ignored files with the -f (force) option.

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

OPCIONES

<pathspec>...

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>.

This option is primarily to help users who are used to older versions of Git, whose git add <pathspec>... was a synonym for git add --no-all <pathspec>..., i.e. ignored removed files.

-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

This option can only be used together with --dry-run. By using this option the user can check if any of the given files would be ignored, no matter if they are already present in the work tree or not.

--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

Apply the "clean" process freshly to all tracked files to forcibly add them again to the index. This is useful after changing core.autocrlf configuration or the text attribute in order to correct files added with wrong CRLF/LF line endings. This option implies -u. Lone CR characters are untouched, thus while a CRLF cleans to LF, a CRCRLF sequence is only partially cleaned to 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=<file>

Pathspec is passed in <file> instead of commandline args. If <file> is exactly - then standard input is used. Pathspec elements are separated by LF or CR/LF. Pathspec elements can be quoted as explained for the configuration variable core.quotePath (see git-config[1]). See also --pathspec-file-nul and global --literal-pathspecs.

--pathspec-file-nul

Only meaningful with --pathspec-from-file. Pathspec elements are separated with NUL character and all other characters are taken literally (including newlines and quotes).

--

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

  • Adds content from all *.txt files under Documentation directory and its subdirectories:

    $ git add Documentacion/\*.txt

    Note that the asterisk * is quoted from the shell in this example; this lets the command include the files from subdirectories of Documentation/ directory.

  • Considers adding content from all git-*.sh scripts:

    $ 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

This shows the change between HEAD and index (i.e. what will be committed if you say git commit), and between index and working tree files (i.e. what you could stage further before git commit using git add) for each path. A sample output looks like this:

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

It shows that foo.png has differences from HEAD (but that is binary so line count cannot be shown) and there is no difference between indexed copy and the working tree version (if the working tree version were also different, binary would have been shown in place of nothing). The other file, add-interactive.c, has 403 lines added and 35 lines deleted if you commit what is in the index, but working tree file has further modifications (one addition and one deletion).

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
p - imprime 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

This lets you review what will be committed (i.e. between HEAD and index).

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.

There are also more complex operations that can be performed. But beware that because the patch is applied only to the index and not the working tree, the working tree will appear to "undo" the change in the index. For example, introducing a new line into the index that is in neither the HEAD nor the working tree will stage the new line for commit, but the line will appear to be reverted in the working tree.

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

Todo debajo de ésta línea en ésta sección es incluido selectivamente de la documentación de git-config[1]. El contenido es el mismo al que se encuentra ahí:

Warning

Missing es/config/add.txt

See original version for this content.

GIT

Parte de la suite de git[1]

scroll-to-top