Введение
В этом практическом занятии (лабораторной работе) вы узнаете, как использовать команду git check-ignore для определения, игнорируется ли файл системой Git. Вы создадите файл .gitignore, добавите в него шаблоны (паттерны), а затем используете git check-ignore для проверки, какие файлы игнорируются и почему.
Вы также изучите, как различные шаблоны в файле .gitignore влияют на то, какие файлы исключаются из отслеживания, и получите более глубокое понимание того, как Git обрабатывает игнорируемые файлы.
Запустить команду git check-ignore для файла
На этом этапе мы узнаем, как использовать команду git check-ignore. Эта команда очень полезна для понимания, почему Git игнорирует определенные файлы или директории. Она помогает отлаживать файл .gitignore.
Сначала убедимся, что мы находимся в директории нашего проекта. Откройте терминал и введите:
cd ~/project/my-time-machine
Теперь создадим файл, который, как мы ожидаем, будет игнорироваться Git. Создадим файл с именем temp.log. Часто файлы журналов (log-файлы) игнорируются в репозиториях Git.
echo "This is a temporary log file." > temp.log
Далее создадим файл .gitignore и добавим в него шаблон (паттерн) для игнорирования файлов с расширением .log.
echo "*.log" > .gitignore
Теперь мы можем использовать команду git check-ignore для проверки, игнорируется ли файл temp.log системой Git.
git check-ignore temp.log
Если Git игнорирует файл, команда выведет шаблон из файла .gitignore, который соответствует этому файлу. Вы должны увидеть вывод, похожий на следующий:
.gitignore:1:*.log temp.log
Этот вывод сообщает нам, что файл temp.log игнорируется из-за шаблона *.log в первой строке файла .gitignore.
Если файл не был бы игнорирован, команда не вывела бы никакого результата.
Понимание работы команды git check-ignore является важным аспектом эффективного управления файлами проекта. Это позволяет избежать случайного добавления в репозиторий файлов, которые вы не хотите видеть там, таких как временные файлы, артефакты сборки или конфигурационные файлы с конфиденциальной информацией.
Проверить шаблоны в файле .gitignore
На этом этапе мы рассмотрим, как различные шаблоны (паттерны) в файле .gitignore влияют на то, какие файлы будут игнорироваться. Файл .gitignore использует специальные шаблоны, чтобы сообщить системе Git, какие файлы или директории следует исключить из отслеживания.
Убедитесь, что вы по-прежнему находитесь в директории ~/project/my-time-machine.
Добавим несколько новых файлов и изменим файл .gitignore, чтобы увидеть, как работают различные шаблоны.
Сначала создадим несколько новых файлов:
mkdir build
echo "This is a build artifact." > build/output.txt
echo "Another log file." > error.log
echo "A temporary file." > temp.dat
echo "A configuration file." > config.ini
Теперь отредактируем файл .gitignore, чтобы добавить в него больше шаблонов. Для этого можно использовать редактор nano.
nano .gitignore
Внутри редактора nano вы должны увидеть строку *.log. Добавьте ниже нее следующие строки:
build/
*.dat
config.ini
Ваш файл .gitignore должен теперь выглядеть следующим образом:
*.log
build/
*.dat
config.ini
Нажмите Ctrl + X, затем Y и Enter, чтобы сохранить изменения и выйти из редактора nano.
Теперь используем команду git check-ignore с флагом -v, чтобы увидеть, какой шаблон игнорирует каждый файл. Флаг -v обеспечивает подробный вывод, показывая соответствующий шаблон и исходный файл (в данном случае .gitignore).
git check-ignore -v temp.log error.log build/output.txt temp.dat config.ini
Вы должны увидеть вывод, похожий на следующий:
.gitignore:1:*.log temp.log
.gitignore:1:*.log error.log
.gitignore:2:build/ build/output.txt
.gitignore:3:*.dat temp.dat
.gitignore:4:config.ini config.ini
Этот вывод подтверждает, что:
- Файлы
temp.logиerror.logигнорируются шаблоном*.log. - Файл
build/output.txtигнорируется, так как вся директорияbuild/игнорируется. - Файл
temp.datигнорируется шаблоном*.dat. - Файл
config.iniигнорируется шаблономconfig.ini.
Понимание этих шаблонов является важным аспектом для того, чтобы держать ваш репозиторий чистым и отслеживать только те файлы, которые вы действительно хотите.
Проверить файлы, не подлежащие игнорированию
На этом этапе мы используем команду git check-ignore, чтобы убедиться, что файлы, которые не игнорируются файлом .gitignore, не вызывают вывода команды. Это поможет вам лучше понять, как работает эта команда и как проверить, что Git отслеживает те файлы, которые вы хотите.
Убедитесь, что вы находитесь в директории ~/project/my-time-machine.
У нас уже есть файл message.txt из предыдущего задания (лабораторной работы). Этот файл не указан в нашем файле .gitignore, поэтому Git не должен его игнорировать.
Применим команду git check-ignore к файлу message.txt:
git check-ignore message.txt
Как и ожидалось, эта команда не должна вывести никакой информации. Это означает, что файл message.txt не игнорируется ни одним шаблоном в файле .gitignore или другими правилами игнорирования.
Теперь создадим еще один файл, который мы не собираемся игнорировать:
echo "This file should be tracked." > important_file.txt
И проверим его статус игнорирования:
git check-ignore important_file.txt
Снова вы не должны увидеть никакого вывода, что подтверждает, что файл important_file.txt не игнорируется.
Наконец, используем команду git status, чтобы увидеть, как Git воспринимает эти файлы.
git status
Вы должны увидеть вывод, похожий на следующий:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .gitignore
Untracked files:
(use "git add <file>..." to include in what will be committed)
important_file.txt
message.txt
nothing added to commit but untracked files present (use "git add" to track)
Обратите внимание, что файлы important_file.txt и message.txt перечислены в разделе "Untracked files" (Неотслеживаемые файлы). Это означает, что Git видит эти файлы, но в настоящее время не отслеживает изменения в них. Игнорируемые файлы (temp.log, error.log, build/output.txt, temp.dat, config.ini) не перечислены здесь, так как Git явно получил команду их игнорировать.
На этом этапе мы закрепляем концепцию, что команда git check-ignore является инструментом для проверки правил игнорирования, и файлы, не соответствующие правилам игнорирования, будут отображаться как "Неотслеживаемые" в выводе команды git status, пока вы явно не добавите их для отслеживания с помощью команды git add.
Резюме
В этом задании (лабораторной работе) мы научились использовать команду git check-ignore для определения того, игнорируется ли конкретный файл системой Git. Мы практиковались в создании файла .gitignore, добавлении в него шаблонов (паттернов) и использовании команды git check-ignore для проверки того, что нужные файлы действительно игнорируются. Вывод команды git check-ignore помог нам понять, какой шаблон в файле .gitignore приводит к игнорированию файла.
Мы также изучили, как различные шаблоны в файле .gitignore влияют на то, какие файлы будут игнорироваться. Создав различные файлы и изменив файл .gitignore с использованием разных шаблонов, мы лучше поняли, как Git интерпретирует эти шаблоны для исключения файлов и директорий из отслеживания. Эти знания являются важными для эффективного управления тем, какие файлы включаются в репозиторий Git.



