我在Rails项目中使用Rubymine。通常情况下,Rubymine在.idea/*文件中做了一些我并不关心的更改。但它一直阻止我查看新的分支,并使我的.idea版本与我的同事不同。
我们已经向.gitignore添加了.idea/,但它会跟踪.idea中的变化。我该怎么做才对呢?
下面是我得到的一个典型的错误消息:
error: Your local changes to the following files would be overwritten by checkout:
.idea/workspace.xml
注意,JetBrains建议“如果你决定与其他开发人员共享IDE项目文件……”,跟踪所有的。idea/*文件,除了以下文件:
workspace.xml
usage.statistics.xml
tasks.xml
货架/目录
因此,为了遵循他们的建议,你可以将这些添加到你的。gitignore中。
来源:
如果您决定与其他开发人员共享IDE项目文件,请遵循以下原则:
…
以下是你需要分享的内容:
除了workspace.xml、usage.statistics.xml和tasks.xml文件以及存储用户特定设置的shelf目录外,项目根目录。idea目录下的所有文件
…
如何管理版本控制系统下的项目(存档)
那一页上有一些额外的注释和讨论,如果你考虑继续做这个,你应该读一下,
包括你可能想要gitignore的额外文件,即使你决定要共享IDE文件(例如。iml文件,.idea/modules.xml, gradle.xml,用户字典文件夹,从gradle或maven生成的额外文件)。
我建议阅读git手册页,以充分理解忽略是如何工作的,将来你会感谢我的;)
与你的问题相关的:
Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning:
A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo".
A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the . gitignore file, with infinite depth.
A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
Other consecutive asterisks are considered invalid.
您可以使用gitignore进行高级gitignore文件生成。它是快速,简单和前沿标签自动生成为您。
使用这个链接的大多数jetbrains软件(intelij, phpstorm…)
Jetbrains .gitignore文件
(编辑)
下面是为Jetbrains软件生成的gitignore文件,这将防止您共享任何Jetbrains软件用于管理项目的敏感信息(密码,密钥库,数据库密码…)
# Created by https://www.gitignore.io
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
*.iml
## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:
# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries
# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.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:
*.ipr
*.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
生成的代码也有很好的注释。
希望能有所帮助。
虽然我切换到Rubymine的时间并不长,但我发现忽略Rubymine的.idea文件并将其提交给git是一件很有挑战性的事情。
以下是我的解决方法
如果你根本没有做过任何分期/提交,或者你刚刚在我的Ruby中启动了一个新项目,那么就简单地这样做
选项1
将下面的代码行添加到.gitignore文件中,该文件通常位于存储库的根目录。
# Ignore .idea files
.idea/
这将确保git忽略所有的。idea文件,尽管它们仍然保留在本地的项目文件夹中。
选项2
如果你已经做了一些分期/提交,或者你刚刚在Ruby我的开发中打开了一个现有的项目,那么就简单地这样做
在终端/命令行中运行代码
git rm -r --cached .idea
这将删除git中已经跟踪的。idea文件
接下来,将.idea/包含到.gitignore文件中,该文件通常位于存储库的根目录。
# Ignore .idea files
.idea/
这将确保git忽略所有的。idea文件,尽管它们仍然保留在本地的项目文件夹中。
选项3
如果你已经做了一些staging/commit,或者你刚刚在Ruby mine中打开了一个现有的项目,并且想在本地和git中完全删除.idea文件,那么就简单地这样做
在终端/命令行中运行代码
git rm -r --cached .idea
这将删除git中已经跟踪的。idea文件
在终端/命令行中运行代码
rm -r .idea
这将删除包括本地文件夹在内的所有。idea文件
接下来,将.idea/包含到.gitignore文件中,该文件通常位于存储库的根目录。
# Ignore .idea files
.idea/
这将确保git忽略所有的。idea文件,并从本地项目文件夹中删除。
这是所有
我希望这对你们有帮助