【问题标题】:Adding a single tracked file to .gitignore without deleting it?将单个跟踪文件添加到 .gitignore 而不删除它?
【发布时间】:2019-07-25 21:09:22
【问题描述】:

我刚刚发现我签入的.idea/myproject.iml 文件包含一个本地路径。因此,我需要将其添加到 .gitignore 并让 git 不再跟踪它。

我(和其他所有人)希望保留我们的本地版本 .idea/myproject.iml,因为它在本地是正确的。

我最初考虑git rm --cached .idea/myproject.iml,但这不是一个解决方案,因为它会从其他所有开发人员那里删除该文件。这在 git 中可能吗?

我注意到 tortoise-svn 有一个“取消版本并添加到忽略列表”命令,而 tortoise-git 有一个“删除并添加到忽略列表”,这让我觉得它是不可能……

【问题讨论】:

标签: git git-rm


【解决方案1】:

由于 cmets 很难格式化,让我们切换到回答模式,虽然它不是真正的回答,只是一个扩展的建议。

因为 PyCharm 要求文件位于项目根目录中名为 .idea 的文件夹中。

的确如此。整个想法是通过常规位置以外的位置共享 IDE 相关文件(模板)。忽略实际 IDE 设置中的任何意外更改。

整个工作流程应该是这样的:

  1. 创建实际 IDE 设置的备份副本
  2. 将已清除的 IDE 设置版本放入源树中的专用子文件夹中
  3. 将它们从常规位置移除
  4. 添加适当的.gitignore 条目
  5. 使用设置模板提交,添加到子文件夹,从源树中删除设置并更新.gitignore
  6. 从备份中恢复设置。现在 git 将忽略文件中的所有进一步更改。
  7. 通知所有团队成员有关提交 IDE 设置的策略更改以及更新前备份其本地设置的需要。
  8. 将来,当需要与同事分享新的 IDE 内容时,她必须将常规 IDE 设置中的块复制到适当的设置模板中。

工作流程可能看起来很麻烦,但您似乎没有其他选择来完成任务。一方面,您无法完全控制 IDE 管理文件的内容,也不能简单地委派对 IDE 进行可共享更改的权利(某些本地内容可能会意外泄漏,因为它已经发生了)。另一方面,强制团队成员在每次提交时手动控制它确实很无聊且容易出错。

也许您可以创建一些支持脚本来合并从设置模板到常规设置的更改。 IDEA 使用 XML 文件进行设置,因此将更改从模板合并到文件的任务看起来非常可行。

【讨论】:

  • 感谢您的工作流程。我们可能有 100 多个存储库(还没有全部转移到 gitlab),所以对我们来说可能不是一个可行的解决方案 - 但我相信其他人可能会觉得它有用。 .idea/ 文件夹现在是一团糟,我们希望 JetBrains 很快就会到达 youtrack.jetbrains.com/issue/IDEA-90785...
  • @thebjorn “我们可能有 100 多个存储库”所以我们做到了。在这种情况下,进行合并的脚本是必须的。事实上,由于有 许多 存储库,因此对适当自动化的需求超过了其创建的难度。等待 JetBrains 解决您的问题确实是另一种选择,但我怀疑这是一个可行的选择 :-)
猜你喜欢
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
  • 2017-12-30
  • 2019-04-27
  • 1970-01-01
  • 2013-04-28
  • 2021-11-04
相关资源
最近更新 更多