可能重复:Intellij Idea 9/10,要签入(或不签入)源代码控制的文件夹?
我开始使用 WebStorm 进行 Web 开发,但不确定从我们的 Git 存储库中添加什么以及排除什么。很明显,.idea
文件夹中的某些文件应该像外部库设置 (jsLibraryMappings.xml
) 一样受版本控制,但其他文件可能会经常更改并且是特定于开发人员的(例如 workspace.xml
)。
WebStorm / IntelliJ IDEA 推荐的 .gitignore
模式是什么?
PS 对此已有疑问,但通常只关注是否包含整个 .idea
文件夹或是否完全排除它。我认为 .idea
文件夹中的一些文件应该受版本控制,而其他文件不应该,我正在尝试找出哪些文件。
.idea
文件会很复杂。
The official support page 应该回答您的问题。
因此,在您的 .gitignore
中,您可能会忽略以 .iws
结尾的文件,以及 workspace.xml
和 tasks.xml
文件。
我只想介绍一个更新的替代方案。有一个在线工具可以根据您可能使用的操作系统、IDE 和编程语言生成 .gitignore
文件。
编辑免责声明:不要复制此文件,而是复制网站生成的文件,他们在保持更新方面做得很好。这只是一个例子。
为 IntelliJ
生成的文件包含以下内容
# Created by https://www.gitignore.io/api/intellij
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/workspace.xml
.idea/tasks.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml
# Sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
# Gradle:
.idea/gradle.xml
.idea/libraries
# Mongo Explorer plugin:
.idea/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
.idea/
中的所有内容”——不再是。当前生成的 .gitignore 没有 .idea/
条目。
.idea/dictionaries
?
.gitignore
的人。我只是展示了执行此操作的工具。我的猜测是它是一个个人文件。您可以在字典中添加可能对其他人无效的内容。特别是当您清理 LINT 消息时。我相信,如果您在您的队友中达成一致,您可以将其添加到您的 git 存储库中。
几年来,我一直支持将特定的 .gitignore
用于 IntelliJ 和 this suggested configuration。
不再。
IntelliJ 更新非常频繁,内部配置文件规范的变化比我想要的更频繁,JetBrains 旗舰版擅长基于 maven/gradle/etc 构建文件自动配置自身。
所以我的建议是将所有编辑器配置文件都排除在项目之外,让用户根据自己的喜好配置编辑器。代码样式之类的东西可以而且应该在构建级别进行配置;说直接在 Maven/Gradle/sbt/etc 上使用 Google Code Style 或 CheckStyle。
这确保了一致性,并将编辑器文件排除在源代码之外,在我个人看来,这是它们应该存在的地方。
.gitignore
。
https://www.gitignore.io/api/jetbrains
由 https://www.gitignore.io/api/jetbrains 创建
### JetBrains ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/workspace.xml
.idea/tasks.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml
# Sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
# Gradle:
.idea/gradle.xml
.idea/libraries
# Mongo Explorer plugin:
.idea/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### JetBrains Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
.idea/*
?节省了很多行。
*
符号的文件,或者只需要忽略一些特殊文件。
Github 将以下 .gitignore 用于他们的程序
https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# 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
# 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/modules.xml
# .idea/*.iml
# .idea/modules
# 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/*
添加到 .gitignore
文件来简单地忽略所有这些。
在我的情况下,/**/.idea/*
效果很好
如 support page 中所述,从版本 2019.1 开始,IntelliJ 能够将需要共享的所有内容添加到版本控制 automatically。
这很棒,因为 IDE 将分两步将必要的文件添加到 Git:
使用 IntelliJ 打开项目并稍等片刻,直到右下角出现以下弹出窗口 选择“始终添加”
https://i.stack.imgur.com/nqmSF.png
或者,您可以选择“查看文件”,然后手动添加它们。
虽然维护正确的 .gitignore
文件很有帮助,但我发现这种替代方法更清洁且更易于使用。
创建虚拟文件夹 my_project 并在该 git clone my_real_project 中创建实际的项目存储库。
现在,在 IDE(Intellij/Pycharm)中打开项目时,打开文件夹 my_project 并将 my_project/my_real_project 标记为 VCS 根。
您可以看到 my_project/.idea 不会污染您的 git 存储库,因为它很高兴地存在于您想要的 git 存储库之外。这样你的 .gitignore 文件也保持干净。
由于以下原因,这种方法效果更好。
1 - .gitignore
文件保持干净,我们不必插入与 JetBrains 产品相关的行,该文件更适合用于二进制文件和库以及 autogen 内容。
2 - Intellij 不断更新他们的项目,.idea
中的文件不断更改 JB 的每个重要版本。这意味着我们必须相应地不断更新我们的 .gitignore
,这不是一个理想的时间利用方式。
- Intellij 在这里有缺陷的模式,大多数编辑器 Atom、VS Code、Eclipse ......没有人将他们的 IDE 内容直接存储在项目根目录中。 JB也不应该是个例外。 Jetbrains 有责任在项目根目录之外跟踪这些文件。他们必须避免污染 VCS 根。这种方法就是这样做的。 .idea
文件夹位于 PROJECT_ROOT
之外
希望这可以帮助。
/.idea
工作正常;通常这个问题会在这个命令之后解决:git rm --cached -r .idea
/.idea
不起作用,您也可以查看其他答案和 JB 的官方指南
/.idea/
添加到您的 .gitignore 文件一次,然后就忘记它了。或者您可以在您的用户 .gitconfig
中执行相同的操作,而无需使用这种虚拟文件夹方法。
.gitignore
应仅包含可在构建期间生成的文件,而不应包含涵盖其他人对 IDE 的偏好的文件。对于所有投反对票的人,请了解 .git/info/exclude
和 core.excludesfile
是什么。
删除 .idea 文件夹 $rm -R .idea/
添加规则 $echo ".idea/*" >> .gitignore
提交 .gitignore 文件 $git commit -am "remove .idea"
下一次提交就可以了
*/.idea/workspace.xml */.idea/tasks.xml
**/.idea/workspace.xml **/.idea/tasks.xml
**/
比*/
好?