Qu'est-ce que Tracked files et Untracked files dans le contexte de GIT?

je suis nouveau à Git. Je souhaite savoir ce que sont les fichiers suivis et Non tracés ? J'ai lu "Pro Git", mais je ne comprenais toujours pas.

quelqu'un Peut-il m'expliquer la différence entre les deux par exemple?

Merci, Nayan

21
demandé sur Aiden Cullo 2012-03-12 12:04:33

4 réponses

un fichier est suivi s'il est sous le contrôle d'une version.

comme petit exemple, un projet C++ aurait

Makefile
main.cpp
interface.hpp
worker.cpp

comme fichiers source; vous les mettriez sous contrôle de version. Pendant la construction,

main.o
worker.o
myapp

sont générés; ceux-ci n'appartiennent pas sous le contrôle de version, de sorte que vous ne pas utiliser git add sur eux. Ils restent Non tracked , parce que git ne se soucie pas de ce qui leur arrive. Jusqu'à ce que vous ajoutez - les à .gitignore (the .o les fichiers sont ignorés par défaut), git ne sait pas si vous voulez les ajouter ou les ignorer, il les affiche donc avec la commande git status jusqu'à ce que vous preniez une décision.

si un fichier est suivi ou non dépend aussi de la version -- supposons que vous autogénérisiez worker.cpp et que vous le retiriez du contrôle de version à une version ultérieure. Le fichier n'est plus dans cette version. Lorsque vous retournez à une version où le fichier était encore sous la version contrôle, git refusera d'écraser ce fichier lors de la caisse.

13
répondu Simon Richter 2012-03-12 08:15:34

Le Git Pro chapitre de livre que vous mentionnez essaie de détail la notion de sans traces de fichier:

lorsque vous vérifiez un SHA1 donné, vous obtenez un "instantané" de tous les fichiers suivis en versions.

tout fichier qui n'est pas référencé par cet instantané n'est pas suivi du . Il ne fait pas partie de l'arbre Git:

Voir " git - comment savoir si un fichier est git objet d'un suivi (par shell code de sortie)? "

tout fichier que vous voulez ignorer doit être déballé (comme expliqué dans cette GitHub help page ).

notez que git n'ignorera pas un fichier qui a déjà été suivi avant qu'une règle ait été ajoutée à ce fichier pour l'ignorer.

Dans ce cas, le fichier doit être dépisté, habituellement avec git rm --cached filename

enter image description here

8
répondu VonC 2017-05-23 12:17:57

les fichiers suivis sont ceux traités (version contrôlée) par Git, qui ont été ajoutés et engagés. Les fichiers non tracés sont la plupart du temps des fichiers que vous ne voulez pas contrôler, car par exemple ils sont générés par votre compilateur.

vous ajoutez des fichiers non tracés au fichier .gitignore , de sorte que Git ne vous demande pas si vous voulez les suivre.

7
répondu CharlesB 2012-03-12 08:13:44

d'un point de vue purement technique: un fichier suivi est simplement un fichier qui existe dans l'index Git. Dire que c'est un fichier "sous contrôle de version" est trompeur, parce que cela suggère que c'est un fichier qui l'a fait dans le repo--et ce n'est pas nécessaire pour qu'un fichier soit suivi.

lorsque vous êtes dans un nouveau git repo, l'index est vide et tous les fichiers de votre répertoire de travail ne sont pas tracés. Un fichier est suivi quand il est ajouté à l'index--à quel point un hachage SHA-1 est créé pour lui et une entrée d'objet est placée dans le .Dossier Git\Objects. À partir de ce moment, Git est capable de comparer le contenu/nom du même fichier dans le répertoire de travail afin de suivre les changements, les renommages et les suppressions. Tant que le fichier existe dans l'index, il est suivi.

3
répondu Jazimov 2017-04-27 21:39:32