Как проверить, есть ли неотслеживаемые файлы в репозитории Git

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

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

Введение

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

Мы начнем с использования основной команды git status для вывода списка неотслеживаемых файлов и понимания ее вывода. Затем мы рассмотрим команду git ls-files --others, которая представляет более прямой способ вывода списка неотслеживаемых файлов. Наконец, мы кратко обсудим, как учитывать игнорируемые файлы в этом процессе.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/SetupandConfigGroup -.-> git/config("Set Configurations") git/BasicOperationsGroup -.-> git/status("Check Status") subgraph Lab Skills git/config -.-> lab-560093{{"Как проверить, есть ли неотслеживаемые файлы в репозитории Git"}} git/status -.-> lab-560093{{"Как проверить, есть ли неотслеживаемые файлы в репозитории Git"}} end

Использование команды git status для вывода списка неотслеживаемых файлов

На этом этапе мы научимся использовать команду git status для определения, какие файлы в директории проекта не отслеживаются системой Git. Это фундаментальная команда для понимания состояния вашего репозитория.

Сначала убедитесь, что вы находитесь в директории проекта. Если вы прошли предыдущее практическое занятие (лабораторную работу), вы должны быть в директории ~/project/my-time-machine. Вы можете проверить текущую директорию с помощью команды pwd:

pwd

Вывод должен быть похож на следующий:

/home/labex/project/my-time-machine

Теперь создадим новый файл в этой директории. Назовем его notes.txt:

echo "Some random notes" > notes.txt

Эта команда создает файл с именем notes.txt и записывает в него текст "Some random notes".

Теперь запустим команду git status, чтобы увидеть, как Git воспринимает этот новый файл:

git status

Вы должны увидеть вывод, похожий на следующий:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt

no changes added to commit (use "git add" and/or "git commit -a")

Обратите внимание на раздел "Untracked files:". Git сообщает, что notes.txt является неотслеживаемым файлом. Это означает, что Git видит этот файл, но в настоящее время не управляет его версиями. Git не включит этот файл в коммиты, если вы явно не попросите его сделать это.

Понимание неотслеживаемых файлов важно, так как это помогает держать ваш репозиторий в чистоте и отслеживать только те файлы, которые являются частью вашего проекта. Временные файлы, артефакты сборки или личные заметки часто остаются неотслеживаемыми.

Использование команды git ls-files --others для проверки

На предыдущем этапе мы использовали команду git status для просмотра неотслеживаемых файлов. Хотя git status дает хорошее представление о состоянии репозитория, иногда вам может понадобиться более простой список только неотслеживаемых файлов. Именно здесь пригодится команда git ls-files --others.

Убедитесь, что вы по-прежнему находитесь в директории ~/project/my-time-machine.

Теперь запустите следующую команду:

git ls-files --others

Вы должны увидеть следующий вывод:

notes.txt

Эта команда выводит список всех файлов в рабочей директории, которые не отслеживаются системой Git. Это более прямой способ просмотра только неотслеживаемых файлов по сравнению с подробным выводом команды git status.

Опция --others сообщает команде git ls-files выводить только файлы, которые не являются частью индекса Git (то есть не отслеживаются). Это полезно для написания скриптов или когда вам просто нужен быстрый список новых и неотслеживаемых файлов в вашем проекте.

Возможно, вы задаетесь вопросом, почему использовать git ls-files --others вместо git status. В то время как git status предоставляет полное представление, включая измененные и подготовленные к коммиту файлы, git ls-files --others специально разработана для вывода только неотслеживаемых файлов. Это может быть очень полезно, когда вы хотите программно обрабатывать или управлять неотслеживаемыми файлами, например, в скрипте, который очищает временные файлы.

Комбинирование с проверкой игнорируемых файлов

На предыдущих этапах мы научились определять неотслеживаемые файлы с помощью команд git status и git ls-files --others. Однако иногда бывают файлы, которые вы нарочно не хотите, чтобы Git отслеживал, например временные файлы, результаты сборки или конфигурационные файлы, содержащие конфиденциальную информацию. Git позволяет указать эти файлы в файле .gitignore.

На этом этапе мы создадим файл .gitignore и посмотрим, как он влияет на вывод команд git status и git ls-files --others.

Сначала убедитесь, что вы находитесь в директории ~/project/my-time-machine.

Теперь создадим файл, который мы хотим игнорировать. Назовем его temp.log:

echo "This is a temporary log file" > temp.log

Запустим команду git status еще раз:

git status

Вы должны увидеть, что и notes.txt, и temp.log перечислены как неотслеживаемые файлы:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt
        temp.log

no changes added to commit (use "git add" and/or "git commit -a")

Теперь создадим файл .gitignore и добавим в него temp.log. Используем редактор nano для создания и редактирования файла:

nano .gitignore

Внутри редактора nano введите следующую строку:

temp.log

Нажмите Ctrl + X, затем Y для сохранения и Enter для подтверждения имени файла.

Теперь запустим команду git status еще раз:

git status

На этот раз temp.log больше не должен появляться в списке "Untracked files:":

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt

no changes added to commit (use "git add" and/or "git commit -a")

Теперь Git знает, что нужно игнорировать temp.log. Посмотрим, как это повлияет на команду git ls-files --others:

git ls-files --others

Теперь вывод должен показывать только notes.txt:

notes.txt

По умолчанию команда git ls-files --others не выводит игнорируемые файлы. Это обычно является желаемым поведением, так как обычно вы не хотите видеть файлы, которые вы явно указали Git игнорировать.

Если вы хотите увидеть игнорируемые файлы вместе с другими неотслеживаемыми файлами, вы можете использовать опцию --ignored с командой git ls-files --others:

git ls-files --others --ignored

Теперь вывод будет включать как неотслеживаемые, так и игнорируемые файлы:

.gitignore
notes.txt
temp.log

Обратите внимание, что сам файл .gitignore является неотслеживаемым, пока вы не добавите его и не закоммитьте.

Понимание того, как использовать файл .gitignore, является важным для того, чтобы держать ваш репозиторий чистым и сосредоточенным на реальных файлах проекта. Это предотвращает случайные коммиты файлов, которые не должны быть в системе контроля версий.

Резюме

В этом практическом занятии мы научились определять неотслеживаемые файлы в репозитории Git. Мы начали с использования базовой команды git status, которая дает полное представление о состоянии репозитория, включая отдельный раздел для неотслеживаемых файлов. Эта команда необходима для понимания, какие файлы в настоящее время не управляются системой Git.

Затем мы рассмотрели команду git ls-files --others как альтернативный способ вывода списка неотслеживаемых файлов. Эта команда предоставляет более простой вывод, в котором перечислены только сами неотслеживаемые файлы. Хотя полный текст третьего этапа не предоставлен, по заголовку можно предположить, что на этом этапе комбинируется проверка неотслеживаемых файлов с учетом игнорируемых файлов, то есть файлов, которые намеренно исключены из отслеживания Git с помощью файла .gitignore.