全局与本地 .gitignore 冲突



我像这样设置了一个全局 .gitignore

# global .gitconfig
[core]
quotepath = false
excludesfile = ~/.gitignore_global

~/.gitignore_global是这样的:

# https://www.gitignore.io/api/pycharm
# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/vcs.xml
.idea/**/jsLibraryMappings.xml
# .idea/**/dictionaries
# Sensitive or high-churn files:
.idea/**/dataSources/
.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 IDE 启动一个新项目时,只会跟踪.idea文件夹中的某些文件,而其他文件则不会被跟踪。太好了。

问题来自我在设置.gitignore_global之前启动的一个项目。事实上,在这个项目中,我设置了一个本地 .gitignore 来完全忽略.idea/文件夹。

# local .gitignore created before the global one
*.idea/

现在,对于那个旧项目,我想开始跟踪.idea文件夹中的相关文件,所以我在# *.idea/注释了该行。

问题就这样开始了。

它不是按照.gitignore_global所述仅跟踪相关文件,而是将 .idea 文件夹中的所有文件标记为新文件(未暂存),忽略.gitignore_global(抱歉冗余)。

我怀疑(不确定)几年前我不小心将.idea文件夹添加到存储库中,然后删除,然后忽略。

我该如何解决这个问题?我只想按照.gitignore_global的说明跟踪 .idea 中未标记为忽略的相关文件。

编辑:重要的部分是git让我将所有新文件添加到暂存区域,甚至是不应该添加的文件。

原来我有 2 个.idea/目录。

一个是由 pycharm 在第一层创建的,.gitdir 也住在那里,另一个埋在几个级别上,目标是我由 webstorm 创建的 webapp。

第一级是正确添加/忽略文件,而深层则不是。

微不足道的原因是,像这样的正则表达式.idea/**/workspace.xml在我的全局 gitignore 上只针对一级目录。

为了使这个工作在 .idea dir 位于我的存储库中的任何地方,我必须将这些正则表达式更改为**/.idea/**/workspace.xml的形式。

最新更新