如何在分支和.metadata的“工作区”级别安全地使用git?

时间:2012-01-12 12:26:39

标签: eclipse git egit

我在工作区级别有一个git repo。即一个仓库中多个密切相关的Eclipse项目。

如果我将.metadata添加到.gitignore,那么每次创建新的分支和结帐时,我都会丢失.metadata文件,因此会手动导入所有项目。这很不愉快。

将.metadata文件存储在版本控制下是否安全?这是一个多开发人员项目,JDK版本甚至OS(未来)可能会有所不同。 (我们目前都在Ubuntu上。)

是否还有其他IDE文件不应该被注释?

谢谢,

克里斯。

1 个答案:

答案 0 :(得分:4)

问题是,在将文件和/或目录添加到.gitignore之前,git已经跟踪了该文件和/或目录:

  • 对于一个文件,它将继续被跟踪,无论如何;
  • 对于目录,还会跟踪此目录中添加到.gitignore时出现的文件。

这意味着,除其他外,如果您在分支f中有一个未跟踪的文件b1,但是您签出此文件所在的分支b2 跟踪,git将无情地覆盖f

正如前一个问题中所提到的,在“损害完成”之后让git完全忽略这些文件的解决方案包括发布git rm -r --cached并且只将它们添加到.gitignore。但这需要逐个分支完成,这意味着在此期间你仍然会遇到问题。

根据您的情况,您有两种选择:

  • 如果您能够“从头开始”重新启动,请执行此操作并立即将.metadata放入.gitignore - 并先提交,然后再提交其余内容;
  • 如果你买不起,你别无选择git filter-branch

对于其他IDE忽略的其他文件,我只能告诉IDEA:.idea*.iml。别人不知道......