Разбор шаблона .gitignore для Flutter
Почему Flutter.gitignore игнорирует .dart_tool, build, сгенерированные файлы платформ и ключи подписи, и почему правило *.lock блокирует даже pubspec.lock.
Flutter.gitignore широко охватывает папку инструментов Dart, результаты сборки, а также файлы, которые Flutter автоматически создаёт в папках платформ Android, iOS, macOS, Windows и Linux. Характерная черта — частое использование **, например **/ios/**/Pods/.
В шаблоне есть и пути самого репозитория Flutter SDK, такие как /bin/cache/ и /dev/bots/. В репозитории приложения таких путей нет, поэтому вреда они не приносят, но имейте в виду: .gitignore, который создаёт flutter create, подходит приложению лучше.
Разбор правил
| Шаблон | Что и почему игнорируется |
|---|---|
.dart_tool/.packages.pub/.flutter-plugins.flutter-plugins-dependencies | Инструменты Dart и pubФайлы, которые заново создаёт flutter pub get, например результаты разрешения пакетов и список плагинов. |
build/coverage/app.*.symbols | Результаты сборкиРезультаты flutter build, покрытие тестами и файлы символов обфусцированной сборки. |
*.lock | Все lock-файлыИгнорирует все файлы .lock. Поэтому исключаются и pubspec.lock, Podfile.lock, Gemfile.lock. Правило подходит для репозитория SDK, но для приложений обычно не подходит. |
**/android/local.properties**/android/key.properties*.jks**/android/**/GeneratedPluginRegistrant.java**/android/gradlew | Сгенерированные файлы и секреты AndroidАвтоматически создаваемые или секретные файлы: local.properties с путём к SDK, key.properties с паролями подписи и хранилище ключей, код регистрации плагинов. |
**/ios/**/Pods/**/ios/Flutter/Generated.xcconfig**/ios/Runner/GeneratedPluginRegistrant.***/ios/**/xcuserdata**/macos/Flutter/ephemeral | Сгенерированные файлы iOS и macOSРезультат установки CocoaPods, xcconfig, который Flutter перезаписывает при каждой сборке, код регистрации плагинов и пользовательское состояние Xcode. |
**/windows/flutter/generated_plugin_registrant.cc**/linux/flutter/generated_plugins.cmake | Код регистрации плагинов для десктопаАвтоматически генерируемые файлы C++ и CMake для подключения плагинов в сборках под Windows и Linux. |
*.log*.pyc*.swp.history | ПрочееЛоги, кэши инструментов и временные файлы редакторов. |
На что обратить внимание на практике
- Для приложений, как рекомендует документация Dart, коммитьте
pubspec.lock. Используя этот шаблон, добавьте в свои правила!pubspec.lockи!**/ios/Podfile.lock. - Никогда не коммитьте
key.propertiesи хранилища ключей.jks. В CI их подставляют из хранилища секретов. - Если выбрать вместе с ним шаблон Dart, игнорироваться будет даже
*.js, поэтому если в веб-исходниках есть файлы JavaScript, проверьте результат.
Исходный шаблон
# Miscellaneous*.class*.lock*.log*.pyc*.swp.buildlog/.history# Flutter repo-specific/bin/cache//bin/internal/bootstrap.bat/bin/internal/bootstrap.sh/bin/mingit//dev/benchmarks/mega_gallery//dev/bots/.recipe_deps/dev/bots/android_tools//dev/devicelab/ABresults*.json/dev/docs/doc//dev/docs/flutter.docs.zip/dev/docs/lib//dev/docs/pubspec.yaml/dev/integration_tests/**/xcuserdata/dev/integration_tests/**/Pods/packages/flutter/coverage/versionanalysis_benchmark.json# packages file containing multi-root paths.packages.generated# Flutter/Dart/Pub related**/doc/api/.dart_tool/.flutter-plugins.flutter-plugins-dependencies**/generated_plugin_registrant.dart.packages.pub-preload-cache/.pub/build/flutter_*.pnglinked_*.dsunlinked.dsunlinked_spec.ds# Android related**/android/**/gradle-wrapper.jar.gradle/**/android/captures/**/android/gradlew**/android/gradlew.bat**/android/local.properties**/android/**/GeneratedPluginRegistrant.java**/android/key.properties*.jks# iOS/XCode related**/ios/**/*.mode1v3**/ios/**/*.mode2v3**/ios/**/*.moved-aside**/ios/**/*.pbxuser**/ios/**/*.perspectivev3**/ios/**/*sync/**/ios/**/.sconsign.dblite**/ios/**/.tags***/ios/**/.vagrant/**/ios/**/DerivedData/**/ios/**/Icon?**/ios/**/Pods/**/ios/**/.symlinks/**/ios/**/profile**/ios/**/xcuserdata**/ios/.generated/**/ios/Flutter/.last_build_id**/ios/Flutter/App.framework**/ios/Flutter/Flutter.framework**/ios/Flutter/Flutter.podspec**/ios/Flutter/Generated.xcconfig**/ios/Flutter/ephemeral**/ios/Flutter/app.flx**/ios/Flutter/app.zip**/ios/Flutter/flutter_assets/**/ios/Flutter/flutter_export_environment.sh**/ios/ServiceDefinitions.json**/ios/Runner/GeneratedPluginRegistrant.*# macOS**/Flutter/ephemeral/**/Pods/**/macos/Flutter/GeneratedPluginRegistrant.swift**/macos/Flutter/ephemeral**/xcuserdata/# Windows**/windows/flutter/generated_plugin_registrant.cc**/windows/flutter/generated_plugin_registrant.h**/windows/flutter/generated_plugins.cmake# Linux**/linux/flutter/generated_plugin_registrant.cc**/linux/flutter/generated_plugin_registrant.h**/linux/flutter/generated_plugins.cmake# Coveragecoverage/# Symbolsapp.*.symbols# Exceptions to above rules.!**/ios/**/default.mode1v3!**/ios/**/default.mode2v3!**/ios/**/default.pbxuser!**/ios/**/default.perspectivev3!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages!/dev/ci/**/Gemfile.lock
Источник шаблонов: github/gitignore/Flutter.gitignore @356fd7b (2026-09-11) · CC0-1.0