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
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.
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 avecgit rm --cached filename
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.
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.