Git игнорирование определенных файлов и директорий

#9  суббота, 1 июля 2023 г.  4 минут(ы)  305 слов

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

Вот пример простого .gitignore файла:

# Ignore all .txt files
*.txt

# Ignore all files in the log directory
/log/

# But do not ignore log.txt, even though you are ignoring .txt files above
!/log.txt

В этом примере Git будет игнорировать все .txt файлы, все файлы в директории log, но он не будет игнорировать log.txt.

Это полезно, когда у вас есть файлы или директории, которые создаются в процессе работы вашего проекта (например, временные файлы, логи, кеш, файлы, специфические для среды разработки), которые не должны быть включены в ваш репозиторий.

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

Пример .gitignore

# Visual Studio 2015/2017 cache/options directory
.vs/

# Build results
[Dd]ebug/
[Rr]elease/
[Xx]64/
[Xx]86/
[Bb]uild/

*.7z

/output/
!projects/3rd-party-libs/raylib-4.2.0/parser/output/

/projects/win32-client/output/
/projects/win32-server/output/

/projects/android-client/android.raylib_game/
/projects/android-client/*.apk

В вашем примере:

  • .vs/ Git будет игнорировать директорию .vs, которую обычно создает Visual Studio для хранения настроек и файлов кэша.
  • [Dd]ebug/, [Rr]elease/, [Xx]64/, [Xx]86/, [Bb]uild/ эти строки игнорируют директории, связанные с процессами сборки и отладки в различных конфигурациях.
  • *.7z эта строка заставляет Git игнорировать все файлы с расширением .7z.
  • /output/ эта строка игнорирует директорию output в корневом каталоге репозитория.
  • !projects/3rd-party-libs/raylib-4.2.0/parser/output/ оператор ! в начале строки отменяет игнорирование. Таким образом, даже если директория output игнорируется, директория projects/3rd-party-libs/raylib-4.2.0/parser/output/ будет включена в репозиторий.
  • /projects/win32-client/output/, /projects/win32-server/output/ эти строки игнорируют конкретные директории output.
  • /projects/android-client/android.raylib_game/ эта строка игнорирует директорию android.raylib_game.
  • /projects/android-client/*.apk эта строка игнорирует все файлы с расширением .apk в директории projects/android-client/.

Имейте в виду, что Git обрабатывает шаблоны .gitignore относительно места, где находится файл .gitignore. Если файл .gitignore находится в поддиректории вашего репозитория, то все пути будут интерпретироваться относительно этой директории.