github/gitignore · Flutter.gitignore
Flutter .gitignore 模板详解
说明 Flutter.gitignore 忽略 .dart_tool、build、各平台生成文件和签名密钥的原因,以及 *.lock 规则连 pubspec.lock 也一并拦截的问题。
Flutter.gitignore 广泛处理 Dart 工具目录、构建结果,以及 Flutter 在 Android、iOS、macOS、Windows、Linux 各平台目录中自动生成的文件。其特点是大量使用 **,例如 **/ios/**/Pods/。
此模板还包含 /bin/cache/、/dev/bots/ 等 Flutter SDK 仓库自身的路径。应用仓库中没有这些路径,所以无害,但应当知道 flutter create 生成的 .gitignore 更适合应用。
逐条规则详解
| 模式 | 忽略什么,为什么忽略 |
|---|---|
.dart_tool/.packages.pub/.flutter-plugins.flutter-plugins-dependencies | Dart 与 pub 工具包解析结果、插件列表等由 flutter pub get 重新生成的文件。 |
build/coverage/app.*.symbols | 构建结果flutter build 的产物、测试覆盖率以及混淆构建的符号文件。 |
*.lock | 所有锁文件忽略所有 .lock 文件。因此 pubspec.lock、Podfile.lock、Gemfile.lock 也会一并被排除。这条规则适合 SDK 仓库,但通常不适合应用。 |
**/android/local.properties**/android/key.properties*.jks**/android/**/GeneratedPluginRegistrant.java**/android/gradlew | Android 生成文件与机密包含 SDK 路径的 local.properties、包含签名密码的 key.properties 和密钥库、插件注册代码等自动生成或机密的文件。 |
**/ios/**/Pods/**/ios/Flutter/Generated.xcconfig**/ios/Runner/GeneratedPluginRegistrant.***/ios/**/xcuserdata**/macos/Flutter/ephemeral | iOS 与 macOS 生成文件CocoaPods 安装结果、Flutter 每次构建时写入的 xcconfig、插件注册代码以及 Xcode 用户状态。 |
**/windows/flutter/generated_plugin_registrant.cc**/linux/flutter/generated_plugins.cmake | 桌面插件注册代码Windows、Linux 构建中为连接插件而自动生成的 C++、CMake 文件。 |
*.log*.pyc*.swp.history | 其他日志、工具缓存和编辑器临时文件。 |
实践中的注意事项
- 对于应用,请按 Dart 文档的建议提交
pubspec.lock。使用此模板时,请在自定义规则中加入!pubspec.lock和!**/ios/Podfile.lock。 - 绝对不要提交
key.properties和.jks密钥库。在 CI 中从机密存储注入。 - 同时选择 Dart 模板时连
*.js也会被忽略,因此如果 Web 源码中有 JavaScript 文件,请测试一下结果。
原始模板
Flutter.gitignore
# 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