Что такое отслеживаемые файлы и неотслеживаемые файлы в контексте 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
отслеживаемые файлы обрабатываются (контролируются версией) Git, которые были добавлены и зафиксированы. Неотслеживаемые файлы-это чаще всего файлы, которые вы не хотите контролировать, потому что, например, они генерируются вашим компилятором.
вы добавляете неотслеженные файлы в .gitignore
файл, так что Git не спросит вас, Хотите ли вы отслеживать их.
с чисто технической точки зрения: отслеживаемый файл-это просто файл, который существует в индексе ЖКТ. Сказать, что это файл "под контролем версий", вводит в заблуждение, потому что это предполагает, что это файл, который попал в репо, и это не обязательно для отслеживания файла.
когда вы вводите новое репозиторий Git, индекс пуст и все файлы в вашем рабочем каталоге не отслеживаются. Файл отслеживается при добавлении в индекс--в этот момент создается хэш SHA-1 для него и в объект помещается запись .Папка объекты\ГИТ. С этого момента Git может сравнивать содержимое / имя одного и того же файла в рабочем каталоге, чтобы отслеживать изменения, переименования и удаления. Пока файл существует в индексе, он отслеживается.