Работа с несколькими файлами и каталогами
Теперь, когда мы знаем, как удалить один файл из кэша Git, давайте рассмотрим более сложные сценарии, такие как удаление нескольких файлов или целых каталогов.
Создание большего количества файлов для практики
Давайте сначала создадим еще несколько файлов и структуру каталогов для практики:
- Создайте каталог и несколько дополнительных файлов:
## Create a directory for temporary files
mkdir temp
## Create some files in the temp directory
echo "This is a temporary file" > temp/temp1.txt
echo "Another temporary file" > temp/temp2.txt
## Create another log file in the main directory
echo "2023-01-02: System updated" > system.log
- Добавьте эти новые файлы в отслеживание Git:
git add .
- Закоммитьте изменения:
git commit -m "Add temporary files and system log"
- Убедитесь, что Git отслеживает все файлы:
git ls-files
Вы должны увидеть:
app.log
config.ini
sample.txt
system.log
temp/temp1.txt
temp/temp2.txt
Удаление нескольких файлов из кэша Git
Теперь предположим, что мы хотим удалить все файлы журналов и весь каталог temp из отслеживания Git.
- Удалите файл журнала из отслеживания Git:
git rm --cached system.log
- Удалите все файлы в каталоге temp рекурсивно:
git rm --cached -r temp/
Флаг -r важен здесь, поскольку он указывает Git рекурсивно удалить все файлы в каталоге из его кэша.
- Проверьте статус:
git status
Вы увидите, что и файл журнала, и все файлы в каталоге temp подготовлены к удалению из системы отслеживания Git:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: system.log
deleted: temp/temp1.txt
deleted: temp/temp2.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
system.log
temp/
- Закоммитьте эти изменения:
git commit -m "Remove logs and temp directory from Git tracking"
- Убедитесь, что Git больше не отслеживает эти файлы:
git ls-files
Теперь вы должны увидеть только:
app.log
config.ini
sample.txt
Однако все файлы по-прежнему существуют в вашем локальном каталоге:
ls -la
ls -la temp/
Использование .gitignore для предотвращения отслеживания нежелательных файлов
Теперь, когда мы удалили файлы из отслеживания Git, давайте настроим файл .gitignore, чтобы предотвратить их случайное повторное добавление:
- Создайте файл
.gitignore:
nano .gitignore
- Добавьте следующие шаблоны в файл:
## Ignore log files
*.log
## Ignore temp directory
temp/
-
Сохраните и выйдите (нажмите Ctrl+X, затем Y, затем Enter)
-
Добавьте и закоммитьте файл .gitignore:
git add .gitignore
git commit -m "Add .gitignore file"
Теперь, даже если вы попытаетесь добавить все файлы в Git, он будет учитывать ваш файл .gitignore и не будет отслеживать указанные шаблоны:
git add .
git status
Вы должны увидеть, что файлы журналов и каталог temp не добавляются в отслеживание Git.
Теперь вы узнали, как удалять несколько файлов и каталогов из кэша Git и как предотвратить отслеживание определенных файлов в будущем с помощью файла .gitignore.