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.48.1 no changes
- 2.48.0 01/10/25
- 2.46.1 → 2.47.2 no changes
- 2.46.0 no changes
- 2.45.1 → 2.45.3 no changes
- 2.45.0 04/29/24
- 2.43.2 → 2.44.3 no changes
- 2.43.1 02/09/24
- 2.40.1 → 2.43.0 no changes
- 2.40.0 03/12/23
- 2.38.1 → 2.39.5 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
- 2.25.1 → 2.33.8 no changes
- 2.25.0 01/13/20
- 2.22.1 → 2.24.4 no changes
- 2.22.0 no changes
- 2.21.1 → 2.21.4 no changes
- 2.21.0 02/24/19
- 2.18.1 → 2.20.5 no changes
- 2.18.0 06/21/18
- 2.17.0 → 2.17.6 no changes
- 2.16.6 12/06/19
- 2.15.4 no changes
- 2.14.6 12/06/19
- 2.11.4 → 2.13.7 no changes
- 2.10.5 09/22/17
- 2.8.6 → 2.9.5 no changes
- 2.7.6 07/30/17
- 2.5.6 → 2.6.7 no changes
- 2.4.12 05/05/17
- 2.3.10 09/28/15
- 2.1.4 → 2.2.3 no changes
- 2.0.5 12/17/14
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ñ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>.
This option is primarily to help users who are used to older versions of Git, whose
git add <pathspec>...
was a synonym forgit 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 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
-
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 usegit 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 thetext
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 variablecore.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 underDocumentation
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 ofDocumentation/
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 saygit commit
), and between index and working tree files (i.e. what you could stage further beforegit commit
usinggit 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 fromHEAD
(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
atrue
. - 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 See original version for this content. |
GIT
Parte de la suite de git[1]