【问题标题】:global vs local .gitignore conflict全球与本地 .gitignore 冲突
【发布时间】:2017-03-21 12:06:42
【问题描述】:

我已经设置了一个像这样的全局 .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 启动一个新项目时,只会跟踪 .ideafolder 中的一些文件,而其他文件则不会。这么好。

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

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

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

问题从这里开始。

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

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

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

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

【问题讨论】:

  • 拥有先前提交下的文件应该无关紧要。 (如果它确实很重要,即使在本地 .gitignore-ing 整个目录时也会遇到问题。)更有可能该 repo 的配置没有正确设置为使用全局忽略文件。
  • 我打开了repo的.git/config文件,好像没有什么异常。它类似于其他项目中的其他配置,实际上按预期工作
  • 嗯...好吧,我做了一个快速测试——包括在一个目录中添加3个文件,提交;从索引中删除文件,忽略目录,提交;为其中一个文件添加全局忽略,注释掉目录的本地忽略。 git status 然后将 foo/ 报告为未跟踪,但是当我 added 它时,它只按预期暂存了两个文件......所以还有其他问题。
  • 您本地的.gitignore 与您的全球.gitignore_global 的规则不同。您确定在列为“未跟踪”的文件中,有些符合全局忽略规则之一吗?
  • 是的,例如我可以暂存.idea/workspace.xml,其中全局忽略使用.idea/**/workspace.xml 明确拒绝它

标签: git gitignore


【解决方案1】:

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

一个是由 pycharm 在第一级创建的,.git 目录也在那里,另一个隐藏在几个级别,目标是我由 webstorm 创建的 webapp。

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

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

为了让 .idea 目录存在于我的仓库中的任何地方都可以使用,我必须将这些正则表达式更改为 **/.idea/**/workspace.xml 的形式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 2011-01-05
    • 2012-08-21
    • 2015-07-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多