Как проверить, игнорируется ли файл системой Git

GitGitBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как использовать команду git check-ignore для определения, игнорируется ли файл системой Git. Вы создадите файл .gitignore, добавите в него шаблоны (паттерны), а затем используете git check-ignore для проверки, какие файлы игнорируются и почему.

Вы также изучите, как различные шаблоны в файле .gitignore влияют на то, какие файлы исключаются из отслеживания, и получите более глубокое понимание того, как Git обрабатывает игнорируемые файлы.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/SetupandConfigGroup -.-> git/git("Show Version") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/clean("Clean Workspace") git/BranchManagementGroup -.-> git/checkout("Switch Branches") subgraph Lab Skills git/git -.-> lab-560027{{"Как проверить, игнорируется ли файл системой Git"}} git/add -.-> lab-560027{{"Как проверить, игнорируется ли файл системой Git"}} git/status -.-> lab-560027{{"Как проверить, игнорируется ли файл системой Git"}} git/clean -.-> lab-560027{{"Как проверить, игнорируется ли файл системой Git"}} git/checkout -.-> lab-560027{{"Как проверить, игнорируется ли файл системой Git"}} end

Запуск команды 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.