GIT-使用IDEA开发的.gitignore模板

7,021 阅读3分钟

IDEA和.gitignore有什么关系?

在使用IDEA编译器开发项目时,项目根目录下面除了有我们开发时所写的源文件,idea还会在里面自动创建一些IDEA自己需要使用到的文件或文件夹(如:.idea文件夹)。在我们使用git管理项目时,这些文件是否需要被ignore就成为一个问题。

.idea文件夹中包含什么?

.idea文件夹中包含两种类型设置信息:项目配置、个人配置。下图是一个 .idea 文件夹的结构示例。

image.png

  • 项目配置包括:项目的语法检测规范(sonarlint、inspectionProfiles),编码风格规范(codeStyle)、项目字典(dictionaries)等
  • 个人配置包括:自己使用的一些Idea插件的配置如:ZeppelinRemoteNotebooks、uiDesigner.xml

idea目录中的什么文件应该剔除?

其中项目配置可以共享(不是必须,根据项目特点选择)、个人配置不能共享。

idea项目的.gitignore模板

  • 模板一:把整个.idea 文件夹都给屏蔽了
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

# Mac
.DS_Store
 
# Maven
log/
target/

好处:简单。

坏处:语法检查规范配置、编码风格配置无法共享

  • 模板二:精细化剔除.idea文件夹下面的一些“个人配置”:(注意Gradle and Maven with auto-import那块的注释,如果使用了maven应该放开注释)
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

# 其他,有些idea插件会在.idea目录中创建配置文件,如果不需要共享也需要将其ignore掉(ex:sonarlint)

好处:不是一股脑屏蔽整个.idea文件夹,保留了语法检查规范配置、编码风格配置。

坏处:如果本地的idea的某些插件在.idea文件中创建的文件可能需要再在gitignore文件中再追加一些东西)

如果文件已经被追踪了怎么办?

.gitinore知识告诉git:“在add文件时.gitignore文件中的文件不需要被add”,对于已经commit了的文件gitignore文件是无法将其从仓库中删除掉的。所以如果文件已经被git追踪了,需要先将其从暂存区删除再commit

# 将内容从暂存区剔除
git rm -r --cached ${filePathToRemove}
# 为了防止以后这些文件再次被add进去,需要将其添加到.gitignore文件中去

除了.gitignore文件还有哪些其他“ignore”文件的方式?

针对方式二的操作办法:

1) 创建一个全局的.gitignore文件

2)在.gitconfig配置文件中配置该文件路径,配置如下

# add this to ~/.gitconfig: 
# 表示全局ignore文件位置 
excludesfile = ~/.gitignore

有没有工具可以帮助生成.gitignore文件?

更多的ignore项可以使用idea的.ignore插件生成 image-20210818105041137