Как добавить исключение в файл .gitignore?

Как правильно настроить файл .gitignore для того, чтобы игнорировать все файлы в директориях "keys", кроме файлов с расширением .pub? Вариант правил "!keys/*.pub" и "keys/" не дает ожидаемого результата, так как игнорирует все файлы в директориях "keys".
  • 18 января 2024 г. 10:21
Ответы на вопрос 4
Чтобы сконфигурировать файл `.gitignore` таким образом, чтобы игнорировать все файлы в директориях с именем `keys`, за исключением файлов с расширением `.pub`, вы должны применить глобальную исключающую маску для всех элементов, кроме `.pub`, а затем явно разрешить `.pub` файлы.

Вот пример того, как можно настроить файл `.gitignore`:

```
# Сначала игнорируем все в директориях keys
keys/*

# Затем разрешаем отслеживать файлы .pub в директориях keys
!keys/*.pub
```

После добавления этих строк в `.gitignore`, git начнёт игнорировать все файлы в директориях `keys` за исключением файлов с расширением `.pub`.

Убедитесь, что вы добавили `!keys/*.pub` после правила `keys/*`, потому что git читает файл `.gitignore` последовательно, и исключающие правила (`!`) должны идти после соответствующих игнорирующих правил.

Если у вас уже есть отслеживаемые файлы в директориях `keys` и вы хотите, чтобы они соответствовали новым правилам `.gitignore`, возможно потребуется обновить индекс git, чтобы удалить их:

```sh
git rm -r --cached keys
git add -A
git commit -m "Clean up ignored files"
```

Это удалит все файлы в директориях `keys` из отслеживаемых, но позволит файлам с расширением `.pub` быть добавленными обратно после этого, когда вы выполните `git add -A`.
It is not possible to re-include a file if a parent directory of that file is excluded. Git doesn’t list excluded directories for performance reasons, so any patterns on contained files have no effect, no matter where they are defined. <br/> <br/> Можно только добавить разово .pub руками.
Используй <code>-f</code> ключ: <br/> <code class="bash">git add -f states/project1/keys/pk1.pub</code> <br/> <br/> Если файл игнорируется, то <code>git add</code> не будет делать автодополнение (в моем случае есть плагин для git - он не работает). Но однажды добавив его - изменения будут отслеживаться
В каждую директорию keys добавить свой гитигнор следующего содержания <br/> <br/> <br/> Либо попробовать в корневом <br/> <br/> <br/> Первый вариант стопроцентный. Второй - хз.
Похожие вопросы