Android gitignore 文件配置小结

前言

当我们使用 Android studio 创建项目的时候,IDE 会帮我们自己创建 gitignore 文件,根目录下和 app 模块下都有,下面是其中内容:

  • 根目录下

    *.iml
    .gradle
    /local.properties
    /.idea/caches
    /.idea/libraries
    /.idea/modules.xml
    /.idea/workspace.xml
    /.idea/navEditor.xml
    /.idea/assetWizardSettings.xml
    .DS_Store
    /build
    /captures
    .externalNativeBuild
    .cxx
    local.properties
    
  • app 目录下

    /build
    

其实如果我们在 github 上创建 repository,可以选择创建 Android 的 gitignore 文件,内容如下:

# Built application files
*.apk
*.aar
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/
#  Uncomment the following line in case you need and you don't have the release build type files in your app
# release/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
.cxx/

# Google Services (e.g. APIs or Firebase)
# google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

# Version control
vcs.xml

# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/

一般情况下,我是就不改这些东西了,可是后面上传 github 发现多了一个 .idea 文件夹,简直菜鸟程序员勋章!


为此了解和整理了一下 gitignore 到底应该怎么写。

gitignore 详解

简介

gitignore 是用来指定不添加到 git 中的配置文件,设置好了 gitignore 规则,在使用git add . 的时候就会忽略那些指定的文件。

忽略文件的原则
  • 忽略操作系统自动生成的文件,比如缩略图等;
  • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如产生的.log日志文件;
  • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
忽略规则的匹配语法
  • 指定文件/目录:指定忽略确定的某个文件或目录。

  • 空格:不匹配任意文件,可作为分隔符,可用反斜杠转义

  • #: 注释,可以使用反斜杠进行转义。

  • /: 在匹配模式后代表目录; 在前表示根目录

  • *: 通配多个字符,即匹配多个任意字符;使用两个星号"**"表示匹配任意中间目录。

  • ?: 通配单个字符,即匹配一个任意字符;

  • []: 包含单个字符的匹配列表,匹配任何一个列在方括号中的字符。

  • !: 表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录。

举例如下:

# 此为注释将被 Git 忽略

# 忽略 gitignore 文件  
.gitignore  

# 忽略 idea 目录 
.idea 

# 忽略根目录下的main文件
/main

# 忽略指定文件夹
main/

# 忽略所有.a后缀的文件
*.a

# 忽略后缀为.o和.a的文件  
*.[oa]  

# 忽略 a/z, a/b/z 或 a/b/c/z等
a/**/z

# 忽略WebbLin.a除外的文件,父目录被排除将不生效
!WebbLin.a

忽略规则的优先级
  1. 从命令行中读取可用的忽略规则
  2. 当前目录定义的规则
  3. 父级目录定义的规则,依次递推
  4. $GIT_DIR/info/exclude 文件中定义的规则
  5. core.excludesfile中定义的全局规则
其他注意点
  • git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
  • 如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。简单来说出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。所以大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一单push,处理起来会非常麻烦。
  • 如果你已经把不想上传的文件上传到了git仓库,那么你必须先从远程仓库删了它,我们可以从远程仓库直接删除然后pull代码到本地仓库这些文件就会本删除,或者从本地删除这些文件并且在.gitignore文件中添加这些你想忽略的文件,然后再push到远程仓库。
  • 如果你发下.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查。

部分参考文章:https://zhuanlan.zhihu.com/p/52885189

你可能感兴趣的:(安卓,安卓,android)