2011-09-27 35 views
19

Cuando modifica un archivo en su directorio de trabajo, git le dice que use "git add" para el escenario.Concepto de git tracking y git staging

Cuando agrega un nuevo archivo a su directorio de trabajo, git le dice que use "git add" para iniciar el rastreo.

estoy un poco confundido acerca de estos 2 conceptos porque asumí el seguimiento de un archivo de cambios es diferente de la puesta en escena para cometer

Respuesta

12

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. Esto significa que debe indicar explícitamente a Git qué cambios desea que aparezcan en la próxima confirmación utilizando git add. (git add -p para agregar solo trozos simples)

No importa si solo actualiza un archivo (»cambios de etapa«) o si agrega el contenido completo de un archivo nuevo (»empieza a rastrear un archivo «) - en ambas ocasiones, todo lo que el índice de Git ve es la adición de nuevos cambios

+0

explicación Terrific. – cheznead

8

Cuando se agrega un archivo para iniciar el seguimiento, sino que también las etapas de su contenido.

Si desea agregar un archivo de seguimiento y sin puesta en escena, puede utilizar

git add -N 
1

Los dos pasos git add que identifica hacen prácticamente lo mismo, simplemente tienen diferentes explicaciones debido a su ruta de llegada.

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

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

21

Git esencialmente tiene 4 estados principales para los archivos en tu repositorio local de:

  • sin seguimiento: El archivo es nuevo, Git no sabe nada al respecto. Si git add <file>, se convierte en:
  • por etapas: Ahora Git sabe el archivo (seguimiento), sino que también hizo parte del siguiente lote comprometerse (llamado el índice ). Si git commit, se convierte en:
  • sin cambios: El archivo no ha cambiado desde su última confirmación. Si lo modifica, se convierte en:
  • unstaged: Modificado, pero no forma parte de la próxima confirmación.Puede ponerla en escena de nuevo con git add

Como se puede ver, una pista git add se archivos sin seguimiento, y etapa cualquier archivo.

También: Usted puede untrack un archivo uncommited con git rm --cached filename y unstage un archivo en escena con git reset HEAD <file>