Flutter git忽略文件问题

  • 本文讲的是原有iOS项目集成flutter module后,多人开发的gitignore配置问题。
问题

刚开始我一个人开发flutter没问题,后来小伙伴加入后,多人开发后,每次拉完代码都会有一大堆的编译文件产生。但这写文件我明明已经加入到gitignore中了,为什么不生效,我一直很奇怪。
经过了几次提交代码都会有很多编译产生的垃圾文件导致更新代码慢之后,我决定要彻底解决它了。

答案

在百度中终于找到了答案,原来是我在创建项目的时候使用的gitignore是码云帮我自动生成的,但是生成的这个gitignore并不全,所以导致很多编译文件没有被忽略。后面虽然我在githubcopy的官方的gitignore文件,但由于对git的忽略文件认识不足,才导致上面的事情发生。

gitignore注意事项

这里把gitignore文件使用的注意事项记录一下:
1、gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
2、但是有时候,gitignore考虑不全面,发现有不该提交的文件已经提交后,仅仅在.gitignore中加入忽略是不行的。这个时候需要执行: git rm -r --cached filename去掉已经托管的文件,然后提交即可。
3、 如果大面积的修改gitignore文件直接使用下面的方式更方便:

首先进入到git仓库目录下执行:
git rm -r --cached .
然后执行:
git add .
将上面的执行结果提交
git commit -am "Remove ignored files"
最后更新本地代码,然后本地的修改推送到远程
git pull origin branch-name
git push origin branch-name

最后我是通过执行3的步骤把问题解决掉的

gitignore内容

这里把我修改后的gitignore文件内容贴在下面,注意只针对iOS,android的话,可能不对

# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
/build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
#这里注意下面的 官方的是**/ios这里需要修改成**/.ios
**/.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/App.framework
**/.ios/Flutter/Flutter.framework
# 这里官方的还是**/.ios/Flutter/Flutter.framework,但是真实的路径已经变了,所以这里也要修改
**/.ios/Flutter/engine/Flutter.framework
**/.ios/Flutter/Generated.xcconfig
**/.ios/Flutter/app.flx
**/.ios/Flutter/app.zip
**/.ios/Flutter/flutter_assets/
**/.ios/ServiceDefinitions.json
**/.ios/Runner/GeneratedPluginRegistrant.*
**/.ios/Flutter/flutter_export_environment.sh
# 这两个编译产生的文件也忽略掉
**/.ios/Runner.xcworkspace/xcshareddata
**.ios/Runner.xcworkspace/xcuserdata
**/.ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/

# 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

后续

  • 在我按照上面步骤处理好后,本地不再有编译产生的文件,拉新代码再编译也不再有编译产生的文件,但是小伙伴们的问题还是存在,我又让每个小伙伴在自己的电脑上按照上面的步骤处理了一遍,然后就好了。

问题又来了

  • 在我将编译产生的那些文件忽略后,在我再次运行flutter module项目时可以看到Prometheum/flutter_prometheum/.ios/Flutter/App.frameworkPrometheum/flutter_prometheum/.ios/Flutter/engine两个文件夹下的内容就没有了。这个时候如果只运行flutter module没什么问题。如果我在native工程上通过Xcode运行就会有问题,尤其是在执行过pod install后再编译native工程就会提示我们<Flutter/Flutter.h> 文件找不到,这个时候我们去Pods/Development Pods/Flutter/Frameworks/Flutter.framework发现该framework下是空的,没有头文件,我们通过show in finder查看该文件路径,发现该文件是处在被我忽略的Prometheum/flutter_prometheum/.ios/Flutter/engine文件夹下的,此时该文件夹下确实是空的,问题源头找到了。
解决
  • 此时我在本地有将上面两个文件夹从忽略文件中删除了,然后再运行flutter module项目,编译后framework又出现了,然后我再去native工程中执行pod install ,再去Pods/Development Pods/Flutter/Frameworks/Flutter.framework 查看发现头文件有了,再编译也不会报错了,O(∩_∩)O哈哈~

后续

随着Flutter的知识了解越来越多,我发现当我执行flutter clean 的时候会把编译生成的.ios等目录删掉,那么我想既然这个目录每次编译都能重新创建,那么没必要将其加入版本控制里面去,于是乎我决定新建一个仓库试一下。
我重新到flutter 官网复制了一份ignore文件并稍作修改,也就是针对android和ios编译产生的文件分别添加了**/.android/**/.ios/
好像flutter官网的gitignore文件经常更新,所以新建项目的话最好去官网获取最新的ignore文件,然后修改

# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.classpath
.project
.settings/
.vscode/

# Flutter repo-specific
/bin/cache/
/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/
version
analysis_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-cache/
.pub/
build/
flutter_*.png
linked_*.ds
unlinked.ds
unlinked_spec.ds

# Android related
# 下面这句是我添加的
**/.android/
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/key.properties
*.jks

# iOS/XCode related
# 下面这句是我添加的
**/.ios/ 
**/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/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# macOS
**/macos/Flutter/GeneratedPluginRegistrant.swift
**/macos/Flutter/Flutter-Debug.xcconfig
**/macos/Flutter/Flutter-Release.xcconfig
**/macos/Flutter/Flutter-Profile.xcconfig

# Coverage
coverage/

# Symbols
app.*.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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342