todos specific los files archivos all git git-add

specific - Diferencia entre "git add-A" y "git add".



git add.vs git add* (10)

El comando git add [--all|-A] parece ser idéntico a git add . . ¿Es esto correcto? Si no, ¿en qué se diferencian?



Con Git 2.0, git add -A es el valor predeterminado: git add . es igual a git add -A . .

git add <path> es lo mismo que " git add -A <path> " ahora, por lo que " git add dir/ " notará las rutas que eliminó del directorio y registrará la eliminación.
En versiones anteriores de Git, " git add <path> " se utiliza para ignorar las eliminaciones.

Puede decir " git add --ignore-removal <path> " para agregar solo las rutas agregadas o modificadas en <path> , si realmente lo desea.

git add es como git add :/ ( agrega todo desde la carpeta superior de repositorios de git ).
Tenga en cuenta que git 2.7 (noviembre de 2015) le permitirá agregar una carpeta llamada " : "!
Ver commit 29abb33 (25 de octubre de 2015) por Junio ​​C Hamano ( gitster ) .

Tenga en cuenta que al iniciar git 2.0 (Q1 o Q2 2014) , cuando se habla de git add . (ruta actual dentro del árbol de trabajo), debe usar '' . ''en los otros comandos de git add también.

Eso significa:

" git add -A . " es equivalente a " git add .; git add -u . " git add .; git add -u .

(Note el extra '' . '' Para git add -A y git add -u )

Porque git add -A o git add -u funcionaría (iniciando git 2.0 solamente) en todo el árbol de trabajo , y no solo en la ruta actual.

Esos comandos operarán en todo el árbol en Git 2.0 por coherencia con " git commit -a " y otros comandos . Debido a que no habrá ningún mecanismo para hacer que " git add -u " se comporte como si " git add -u . ", es importante para aquellos que están acostumbrados a " git add -u " (sin pathspec) actualizando el índice solo para las rutas en el subdirectorio actual para comenzar a entrenar sus dedos para decir explícitamente " git add -u . " cuando lo dicen antes de que llegue Git 2.0.

Se emite una advertencia cuando estos comandos se ejecutan sin un pathspec y cuando tiene cambios locales fuera del directorio actual , porque el comportamiento en Git 2.0 será diferente de la versión de hoy en tal situación.


En Git 2.x :

  • Si se encuentra directamente en el directorio de trabajo , git add -A y git add . Trabajar sin diferencia.

  • Si se encuentra en algún subdirectorio del directorio de trabajo , git add -A agregará todos los archivos del directorio de trabajo completo, y git add . agregará archivos de su directorio actual .

Y eso es todo.


Entonces, según las instrucciones anteriores de Charles, después de probar mi entendimiento propuesto sería el siguiente:

# For the next commit $ git add . # add to index only files created/modified and not those deleted $ git add -u # add to index only files deleted/modified and not those created $ git add -A # do both operation at once, add to index all files

Este enlace también puede ser útil para comprender en qué situación se pueden aplicar esos comandos: Eliminar archivos eliminados de su directorio de trabajo de Git .


Finalmente creo que entiendo esto, muchas gracias a todos. Espero que esto pueda agregar algo más de claridad.

!The syntax is git add <limiters> <pathspec> ! Aka git add (nil/-u/-A) (nil/./pathspec)

Los limitadores pueden ser -u o -A o nil.

Pathspec puede ser un filepath o punto, ''.'' para indicar el directorio actual.

Conocimiento de fondo importante sobre cómo git ''agrega''.

  • Los archivos invisibles, los prefijados con un punto, (archivos de puntos) nunca son reconocidos automáticamente por Git. Ni siquiera están listados como ''sin seguimiento''.
  • Las carpetas vacías nunca son agregadas por git. Ni siquiera están listados como ''sin seguimiento''. (Una solución alternativa es agregar un archivo en blanco, posiblemente invisible, a los archivos rastreados).
  • El estado de Git no mostrará información de subcarpetas, es decir, archivos sin seguimiento, a menos que se rastree al menos un archivo en esa subcarpeta. Antes de ese tiempo, git considera que toda la carpeta está fuera del alcance, a la ''vacía''. Está vacío de elementos rastreados.
  • Especificando una especificación de archivo = ''.'' (punto), o el directorio actual, no es recursivo a menos que también se especifique -A. Punto se refiere estrictamente al directorio actual, omite las rutas encontradas arriba y abajo.

Ahora, dado ese conocimiento, podemos aplicar las respuestas anteriores.

Los limitadores son los siguientes.

  • -u = --update = subconjunto de archivos rastreados => Agregar = No; Cambio = Sí; Eliminar = Sí. => iff el artículo es rastreado.
  • -A = --todo (no tal -a, que da error de sintaxis) = superconjunto de todos los archivos no rastreados / rastreados, a menos que en Git <2.0, en donde si se da la especificación de archivo de puntos, solo se considera esa carpeta en particular. => Si se reconoce el elemento, git add -A lo encontrará y lo agregará.

El pathspec es el siguiente.

  • En Git <2.0, para los dos limitadores (actualizar y todos), el nuevo valor predeterminado es operar en todo el árbol de trabajo, en lugar de la ruta actual (git <= 1.9),
  • Sin embargo, en v2.0, la operación se puede limitar a la ruta actual: simplemente agregue el sufijo de punto explícito (que también es válido en Git <= 1.9);

git add -A .

git add -u .

En conclusión, mi política es;

  • 1.Asegúrese de que cualquier archivo / archivo que se agregará se contabiliza en el estado de git.
  • 1A. Si falta algún elemento, debido a archivos / carpetas invisibles, agréguelos por separado.
  • 2. Tener un buen gitignore para que normalmente solo los archivos de interés estén sin seguimiento y / o no se reconozcan.
  • 3. Desde el nivel superior del repositorio, "git add -A" para agregar todos los elementos. Esto funciona en todas las versiones de git.
  • 4.Retire los elementos deseados del índice si lo desea.
  • 6. Si hay un error grande, haga ''git reset'' para borrar el índice por completo.

La opción -A agrega, modifica y elimina entradas de índice para que coincidan con el árbol de trabajo.

En GIT 2, la opción -A ahora es predeterminada.

Cuando un . se agrega que limita el alcance de la actualización al directorio en el que se encuentra actualmente, según la documentación de Git

Si no se proporciona <pathspec> cuando se usa la opción -A, se actualizan todos los archivos en todo el árbol de trabajo (las versiones anteriores de Git se utilizan para limitar la actualización al directorio actual y sus subdirectorios).

Una cosa que agregaría es que si se usa el modo --interactive o -p , git add se comportará como si se usara el indicador de actualización ( -u ) y no se agregaran nuevos archivos


Tarde a la fiesta, pero esta pregunta también merece una respuesta rápida más detallada.

git add -A

¿Ambos abajo (igual que git add --all )

git add .

Etapas nuevos + archivos modificados

git add -u

Etapas modificadas + archivos borrados


Las cosas cambiaron con Git 2.0:

  • -A es ahora el predeterminado
  • el antiguo comportamiento ya está disponible con --ignore-removal
  • git add -u y git add -A en un subdirectorio sin rutas en la línea de comandos operan en todo el árbol

Así que para git 2 la respuesta es:

  • git add . y git add -A . agregar archivos nuevos / modificados / eliminados en el directorio actual
  • git add --ignore-removal . agrega archivos nuevos / modificados en el directorio actual
  • git add -u . Agrega archivos modificados / eliminados en el directorio actual
  • sin el punto, agregue todos los archivos en el proyecto independientemente del directorio actual

git add . es igual a git add -A . agrega archivos al índice solo desde carpetas actuales y secundarias.

git add -A agrega archivos al índice de todas las carpetas en el árbol de trabajo.

PS: la información se relaciona con Git 2.0.


Esta respuesta solo se aplica a la versión 1.x de Git . Para la versión 2.x de Git, vea otras respuestas.

Resumen:

  • git add -A escalona todos los cambios

  • git add . Etapas de nuevos archivos y modificaciones, sin eliminaciones.

  • Modificaciones y eliminaciones de git add -u stage, sin archivos nuevos.

Detalle:

git add -A es equivalente a git add .; git add -u git add .; git add -u .

El punto importante sobre git add . es que mira el árbol de trabajo y agrega todas esas rutas a los cambios por etapas si se cambian o son nuevas y no se ignoran, no realiza ninguna acción ''rm''.

git add -u examina todos los archivos ya rastreados y organiza los cambios en esos archivos si son diferentes o si se eliminaron. No agrega ningún archivo nuevo, solo realiza cambios en los archivos ya rastreados.

git add -A es un atajo útil para hacer ambas cosas.

Puedes probar las diferencias con algo como esto (ten en cuenta que para Git versión 2.x tu salida para git add . Git git status será diferente):

git init echo Change me > change-me echo Delete me > delete-me git add change-me delete-me git commit -m initial echo OK >> change-me rm delete-me echo Add me > add-me git status # Changed but not updated: # modified: change-me # deleted: delete-me # Untracked files: # add-me git add . git status # Changes to be committed: # new file: add-me # modified: change-me # Changed but not updated: # deleted: delete-me git reset git add -u git status # Changes to be committed: # modified: change-me # deleted: delete-me # Untracked files: # add-me git reset git add -A git status # Changes to be committed: # new file: add-me # modified: change-me # deleted: delete-me