回答
如果文件受版本控制,則跟蹤文件。
作爲一個小例子,一個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和Xcode的 - 未跟蹤文件
- 2. git倉庫中未跟蹤的文件是什麼?
- 3. Git的狀態報告的跟蹤文件未經跟蹤
- 4. 將跟蹤的文件移動到未跟蹤的git
- 5. 交互合併文件跟蹤與git和未跟蹤本地文件
- 6. GIT沒有跟蹤文件
- 7. git clean只跟蹤文件
- 8. Git沒有跟蹤文件
- 9. git status - 不顯示未跟蹤文件
- 10. Git。更新未跟蹤文件
- 11. Git忽略未跟蹤文件
- 12. Git commit -a「未跟蹤文件」?
- 13. 跟蹤文件
- 14. 什麼原因導致文件在Git中未被跟蹤?
- 15. Git跟蹤未追蹤的文件,但未添加到提交
- 16. Git - 跟蹤已經跟蹤的文件的移動
- 17. 爲什麼`git add -p`沒有處理未跟蹤的文件?
- 18. 將未跟蹤的文件夾合併到已跟蹤的Git存儲庫
- 19. 跟蹤的文件被標記爲未跟蹤
- 20. 你怎麼不在git中添加未跟蹤的文件?
- 21. git忽略正在跟蹤的文件
- 22. 對composer.lock文件的Git跟蹤
- 23. Git:忽略跟蹤的文件
- 24. 刪除由Git跟蹤的文件
- 25. git跟蹤一個文件的變化
- 26. 的承諾,而分期階段未跟蹤文件跟蹤文件更改
- 27. 在AWS中跟蹤文件
- 28. Git刪除工作目錄中的跟蹤文件只留下未跟蹤的文件
- 29. 如何在git而不是未跟蹤的目錄中查看未跟蹤的文件
- 30. 無法停止Git跟蹤.gitignore'd文件
說「跟蹤文件」是曾經添加和提交過的文件是完全不正確的。被跟蹤的文件只是一個存在於索引樹中的文件 - 它如何到達那裏可能是由於分支簽出或由於添加或由於直接的Git管道命令導致的。 – Jazimov 2017-04-27 21:34:56