Что такое отслеживаемые файлы и неотслеживаемые файлы в контексте GIT?

Я новичок в Git. Я хочу знать, что такое гусеничная и untracked файлов? Я читал "Pro Git", но все еще не мог понять.

может кто-нибудь объяснить мне разницу между двумя примерах?

спасибо, Наян!--5-->

4 ответов


файл отслеживается, если он находится под контролем версий.

в качестве небольшого примера проект C++ будет иметь

Makefile
main.cpp
interface.hpp
worker.cpp

в качестве исходных файлов; вы бы поставил их под контроль версий. Во время сборки,

main.o
worker.o
myapp

генерируются; они не принадлежат под контролем версий, поэтому вы не используете git add на них. Они остаются не отслежен, потому что git не заботится о том, что с ними происходит. Пока вы не добавите их в .gitignore (the .o файлы по умолчанию игнорируются), git не знает, хотите ли вы добавить или игнорировать их, поэтому он отображает их с помощью git status команда, пока вы не примете решение.

ли файл отслеживается или нет также зависит от версии-предположим, вы автоформирования worker.cpp и удалить его из системы управления версиями в более поздней версии. Файл теперь не отслеживается в этой версии. Когда вы вернетесь к версии, где файл все еще находился под контролем версий, git откажется перезаписывать этот файл во время проверки.


на Git Pro глава книги вы упоминаете пытается подробно понятие неотслеживаемого файла:

когда вы проверяете данный SHA1, вы получаете "снимок" всех версионных файлов.
любой файл, на который не ссылается этот снимок, не отслеживается. Это не часть дерева Git:
См."git-как определить, отслеживается ли файл git (по коду выхода оболочки)?"

любой файл, который вы хотите игнорировать, должен быть распакован (как объясняется в этом страница справки GitHub).

обратите внимание, что git не будет игнорировать файл, который уже отслеживался до добавления правила в этот файл, чтобы игнорировать его.
В таком случае файл должен быть не отслеживается, обычно с git rm --cached filename

enter image description here


отслеживаемые файлы обрабатываются (контролируются версией) Git, которые были добавлены и зафиксированы. Неотслеживаемые файлы-это чаще всего файлы, которые вы не хотите контролировать, потому что, например, они генерируются вашим компилятором.

вы добавляете неотслеженные файлы в .gitignore файл, так что Git не спросит вас, Хотите ли вы отслеживать их.


с чисто технической точки зрения: отслеживаемый файл-это просто файл, который существует в индексе ЖКТ. Сказать, что это файл "под контролем версий", вводит в заблуждение, потому что это предполагает, что это файл, который попал в репо, и это не обязательно для отслеживания файла.

когда вы вводите новое репозиторий Git, индекс пуст и все файлы в вашем рабочем каталоге не отслеживаются. Файл отслеживается при добавлении в индекс--в этот момент создается хэш SHA-1 для него и в объект помещается запись .Папка объекты\ГИТ. С этого момента Git может сравнивать содержимое / имя одного и того же файла в рабочем каталоге, чтобы отслеживать изменения, переименования и удаления. Пока файл существует в индексе, он отслеживается.