Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.40.1 → 2.43.0 no changes
- 2.40.0 03/12/23
- 2.38.1 → 2.39.3 no changes
- 2.38.0 10/02/22
- 2.37.4 → 2.37.7 no changes
- 2.37.3 08/30/22
- 2.34.1 → 2.37.2 no changes
- 2.34.0 11/15/21
SINOPSIS
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | --[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ñadirdir/fichero1
ydir/fichero2
) para actualizar el índice para coincidir con el estado actual del directorio como un todo (ej. especificandodir
registrará no sólo el ficherodir/fichero1
modificado en el árbol de trabajo, un ficherodir/fichero2
agregado al árbol de trabajo, pero también a ficherodir/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 subcomandopatch
. 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 congit 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 usegit 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 atributotext
, 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óncore.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 directorioDocumentacion
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 directorioDocumentacion/
. -
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 usandogit add
antes degit 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
atrue
. - 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 See original version for this content. |
Warning
|
Missing See original version for this content. |
GIT
Parte de la suite de git[1]