Concepto de git tracking y git staging

Cuando modifica un file en su directory de trabajo, git le dice que use "git add" para el escenario.

Cuando agrega un nuevo file a su directory de trabajo, git le dice que use "git add" para iniciar el seguimiento.

Estoy un poco confundido acerca de estos 2 conceptos porque asumí que hacer un seguimiento de un file para los cambios es diferente de organizarlo para la confirmación

Git tiene un concepto conocido como 'el índice'. Para crear una nueva confirmación, llene el índice con los contenidos que le gustaría tener en la siguiente confirmación. Eso significa que tienes que decirle explícitamente a Git qué cambios quieres que aparezcan en la siguiente confirmación usando git add . ( git add -p para agregar solo trozos sueltos)

No importa a Git si solo actualizas un file (»cambios de escenario«) o si agregas el contenido completo de un file nuevo ("empieza a rastrear un file«): en ambas ocasiones, todo lo que ve el índice de Git es la adición de nuevos cambios

Git esencialmente tiene 4 estados principales para los files en su repository local:

  • untracked: el file es nuevo, Git no sabe nada al respecto. Si git add <file> , se convierte en:
  • en etapas: ahora Git conoce el file (rastreado), pero también lo hizo parte del siguiente lote de confirmación (llamado índice ). Si git commit , se convierte en:
  • sin cambios: el file no ha cambiado desde su último commit. Si lo modifica , se convierte en:
  • unstaged: Modificado pero no parte del próximo commit aún. Puedes ponerlo de nuevo en escena con git add

Como puede ver, un git add hará un seguimiento de los files sin seguimiento , y la etapa de cualquier file.

Además: Puede destrabar un file sin editar con git rm --cached filename caching y desestaciar un file en etapas con git reset HEAD <file>

Cuando agrega un file para iniciar el seguimiento, también organiza su contenido.

Si desea agregar un file para rastrear sin organizarlo, puede usar

 git add -N 

Los dos pasos de git add que se usan básicamente son los mismos, simplemente tienen diferentes explicaciones debido a su ruta de llegada.

El git add simplemente le dice a git que el file proporcionado es un file que desea tener, en su forma actual exacta (su contenido), dentro de su repository de control de origen. En ese punto, Git tomará una instantánea del file (y saveá una nota en su índice) para que esté listo para cuando tenga listos y agregados todos los cambios a sus files (es decir, reunidos en el área de preparación), para tu git commit (con el post apropiado ;-).

Una vez que se ha informado a git sobre ese file (por ejemplo, la opción-av de @ avh) notará (rastrear) los cambios en el file bajo la apariencia de varios commands (como el git status ). Por lo tanto, más adelante, debe indicar explícitamente a git cuando ya no desea que se rastree un file ( git rm <file> ), y puede continuar editando un file (localmente) después de haber add la versión que estará en el file cometer. Casi obviamente (o quizás no), puedes git add un file muchas veces antes de comprometer la versión final.