Se realiza 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 de origen; pondrías estos bajo control de versión. Durante la creación,
main.o
worker.o
myapp
se generan; estos no pertenecen al control de la versión, por lo que no usa git add
en ellos. Siguen siendo sin seguimiento, porque a git no le importa lo que les ocurra. Hasta que los agregue a .gitignore
(los archivos .o se ignoran por defecto), git no sabe si desea agregarlos o ignorarlos, por lo que los muestra con el comando git status
hasta que tome una decisión.
El hecho de que un archivo se rastree o no depende también de la versión; supongamos que genera automáticamente worker.cpp
y la elimina del control de versiones en una versión posterior. El archivo ahora no se ha rastreado en esa versión. Cuando regrese a una versión donde el archivo aún estaba bajo control de versión, git rechazará sobreescribir ese archivo durante la verificación.
Es completamente incorrecto decir que un "archivo rastreado" es uno que se agregó una vez Y COMPROMETIDO. Un archivo rastreado es simplemente un archivo que existe en el árbol de índice: cómo pudo haber sido debido a un registro de una sucursal o debido a un agregado o debido a un comando directo de plomería de Git. – Jazimov