回答
如果文件受版本控制,则跟踪文件。
作为一个小例子,一个C++项目将有
Makefile
main.cpp
interface.hpp
worker.cpp
作为源文件;你会把这些放在版本控制之下。在构建期间,
main.o
worker.o
myapp
被生成;这些不属于版本控制,所以你不要在它们上使用git add
。他们仍然untracked,因为git不关心他们会发生什么。在将它们添加到.gitignore
(默认情况下忽略.o文件)之前,git不知道您是要添加还是忽略它们,因此它会使用git status
命令显示它们,直到做出决定。
是否跟踪文件还取决于版本 - 假设您自动生成worker.cpp
,并在较高版本的版本控制中将其删除。该文件现在未在该版本中进行跟踪。当你回到版本控制的版本时,git会在结帐时拒绝覆盖该文件。
的Git Pro book chapter你提到试图详细说明未跟踪文件的概念:
当你签一个给定的SHA1,你得到的所有版本的文件的“快照”。
此快照未引用的任何文件未被跟踪。它不是的Git树的一部分:
请参阅“git - how to tell if a file is git tracked (by shell exit code)?”
要忽略必须是未经跟踪(如本GitHub help page解释)的任何文件。
请注意,在将规则添加到此文件忽略它之前,git不会忽略已经跟踪的文件。
在文件必须是这样的情况下未进行跟踪,通常与git rm --cached filename
履带文件是一个处理(版本控制)通过GIT中,一度被加入并致力于这一点。未被跟踪的文件是大多数时候你不想被控制的文件,因为例如它们是由你的编译器生成的。
您将未跟踪的文件添加到.gitignore
文件中,以便Git不会询问您是否要跟踪它们。
从纯粹的技术角度来看:被跟踪的文件只是一个存在于Git索引中的文件。说这是一个“版本控制下”的文件是误导性的,因为这表明它是一个文件,使其成为回购 - 并不需要对文件进行跟踪。
当你初始化一个新的Git仓库时,索引是空的,你的工作目录中的所有文件都是未跟踪的。当文件被添加到索引时,文件被追踪 - 此时为其创建SHA-1哈希,并将对象条目放入.Git \ Objects文件夹中。从那一刻起,Git就可以比较工作目录中同一文件的内容/名称,以便跟踪更改,重命名和删除。只要文件存在于索引中,它就会被跟踪。
- 1. git仓库中未跟踪的文件是什么?
- 2. 将跟踪的文件移动到未跟踪的git
- 3. git add后未跟踪的文件
- 4. git clean只跟踪文件
- 5. Git没有跟踪文件
- 6. Git。更新未跟踪文件
- 7. Git忽略未跟踪文件
- 8. Git commit -a“未跟踪文件”?
- 9. 跟踪文件
- 10. 什么原因导致文件在Git中未被跟踪?
- 11. Git跟踪未追踪的文件,但未添加到提交
- 12. 为什么`git add -p`没有处理未跟踪的文件?
- 13. 跟踪的文件被标记为未跟踪
- 14. 对composer.lock文件的Git跟踪
- 15. git跟踪一个文件的变化
- 16. 的承诺,而分期阶段未跟踪文件跟踪文件更改
- 17. 在AWS中跟踪文件
- 18. 如何在git而不是未跟踪的目录中查看未跟踪的文件
- 19. git - 跟踪Linux内核.config文件
- 20. Git合并 - 不提交跟踪文件
- 21. Git跟踪点文件(例如:.zshrc)
- 22. 如何使用Git跟踪.txt文件?
- 23. Git LFS跟踪文件夹递归地
- 24. Git不跟踪.gitignore异常文件夹
- 25. Git克隆导致删除和未跟踪的文件
- 26. Git添加修改,删除和未跟踪的所有文件?
- 27. 未跟踪的文件,而结账
- 28. Git是如何删除未跟踪文件
- 29. Git更改没有提交提交和未跟踪文件
- 30. Git在Windows上:为什么我突然有了跟踪的未跟踪目录?
说“跟踪文件”是曾经添加和提交过的文件是完全不正确的。被跟踪的文件只是一个存在于索引树中的文件 - 它如何到达那里可能是由于分支签出或由于添加或由于直接的Git管道命令导致的。 – Jazimov 2017-04-27 21:34:56