ver tag pendientes oneline modificados log ignorar crear commits comando archivos git git-track git-untracked

tag - ¿Qué son los archivos rastreados y los archivos no rastreados en el contexto de GIT?



git ver commits pendientes (4)

Soy nuevo en Git. Deseo saber qué son los archivos rastreados y no rastreados . Leí "Pro Git", pero todavía no podía entender.

¿Puede alguien explicarme la diferencia entre los dos proporcionando un ejemplo?

Gracias nayan


Desde una perspectiva puramente técnica: un archivo rastreado es simplemente un archivo que existe en el índice Git. Decir que es un archivo "bajo control de versión" es engañoso, porque esto sugiere que es un archivo que se convirtió en el repositorio, y eso no es necesario para que se rastree un archivo.

Cuando inicia un nuevo repositorio de Git, el índice está vacío y todos los archivos en su directorio de trabajo están sin seguimiento. Se rastrea un archivo cuando se agrega al índice, momento en el que se crea un hash SHA-1 para él y se coloca una entrada de objeto en la carpeta .Git / Objects. A partir de ese momento, Git puede comparar el contenido / nombre del mismo archivo en el directorio de trabajo para rastrear cambios, renombrar y eliminar. Mientras el archivo exista en el índice, se rastreará.


El capítulo del libro de Git Pro que mencionas intenta detallar la noción de archivo sin seguimiento:

Cuando verifica un SHA1 dado, obtiene una "instantánea" de todos los archivos versionados.
Cualquier archivo no referenciado por esta instantánea no está rastreado . No es parte del árbol Git:
Consulte " git: cómo saber si un archivo es git seguido (por el código de salida del shell)? "

Cualquier archivo que desees ignorar debe estar sin seguimiento (como se explica en esta página de ayuda de GitHub ).

Tenga en cuenta que git no ignorará un archivo que ya se había seguido antes de agregar una regla a este archivo para ignorarlo.
En tal caso, el archivo no debe ser rastreado, generalmente con git rm --cached filename


Los archivos rastreados son los manejados (controlados por versión) por Git, que una vez se agregaron y confirmaron. Los archivos sin seguimiento son la mayoría de los archivos de tiempo que no desea que se controlen, porque, por ejemplo, los genera su compilador.

Agrega archivos sin .gitignore archivo .gitignore , para que Git no le pregunte si desea realizar un seguimiento de ellos.


Se hace un seguimiento de un archivo si está bajo control de versión.

Como un pequeño ejemplo, un proyecto de C ++ tendría

Makefile main.cpp interface.hpp worker.cpp

como archivos fuente; Los pondrías bajo el control de versiones. Durante la construcción,

main.o worker.o myapp

son generadas; estos no pertenecen al control de versiones, por lo que no utiliza git add en ellos. Permanecen sin seguimiento , porque a git no le importa lo que les pase. Hasta que los agregue a .gitignore (los archivos .o se ignoran de manera predeterminada), git no sabe si desea agregarlos o ignorarlos, por lo que los muestra con el comando git status hasta que tome una decisión.

Si un archivo se rastrea o no también depende de la versión, supongamos que usted autogenerará worker.cpp y lo elimine del control de versiones en una versión posterior. El archivo ahora está sin seguimiento en esa versión. Cuando regresa a una versión en la que el archivo aún estaba bajo el control de la versión, git rechazará sobrescribir ese archivo durante el proceso de pago.