2012-03-12 11 views

Respuesta

9

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.

2

El Git Pro book chapter mencionas intenta detallar la noción de archivo sin seguimiento:

cuando realice el pago de una determinada SHA1, se obtiene una "instantánea" de todos los archivos versionados.
No se rastrea ningún archivo al que no se haga referencia en esta instantánea. No es parte del árbol de Git:
Ver "git - how to tell if a file is git tracked (by shell exit code)?"

Cualquier archivo que desea ignorar debe ser sin seguimiento (como se explica en este GitHub help page).

Tenga en cuenta que git no ignorará un archivo que ya fue rastreado antes de agregar una regla a este archivo para ignorarlo.
En tal caso, el archivo debe tener un-un seguimiento, por lo general con git rm --cached filename

enter image description here

4

archivos orugas son el uno manejado (versión controlada) por Git, que una vez fueron añadidos y comprometido. Los archivos sin seguimiento son la mayoría de los archivos de tiempo que no desea controlar, porque, por ejemplo, son generados por su compilador.

Agregue archivos sin seguimiento al archivo .gitignore, para que Git no le pregunte si desea rastrearlos.

+2

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

0

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 el control de la versión" es engañoso, porque esto sugiere que es un archivo que ingresó en el repositorio, y que no es necesario para rastrear un archivo.

Cuando inicia un nuevo repositorio de Git, el índice está vacío y no se rastrean todos los archivos en su directorio de trabajo. Se realiza un seguimiento de un archivo cuando se agrega al índice, en cuyo punto se crea un hash SHA-1 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 rastrea.

Cuestiones relacionadas