如何在Git源代码控制下从子文件夹中创建一个单独的Eclipse项目

时间:2015-05-17 10:19:12

标签: eclipse git git-submodules subdirectory git-subtree

我有一个网站项目,主文件位于根文件夹中,管理工具位于子文件夹中。管理工具包括根文件夹中的几个类。

我想通过Git对'site'(root)和'admin tool'(子文件夹)保持单独的版本控制。使用Git忽略根目录中的子文件夹和子文件夹中的单独存储库,这可以正常工作。

但是,我喜欢使用Eclipse(4.4.2)作为我的Git GUI,但Eclipse在项目基础上管理它,当我尝试在Eclipse的子文件夹中创建一个新项目时,它抱怨这是不允许的,因为该文件夹已经是另一个项目(根文件夹)的一部分。

有没有办法,就像在Git中一样,让Eclipse忽略项目中的子文件夹,以便我可以创建子文件夹的单独项目?或者我应该以不同的方式处理整个事情?

2 个答案:

答案 0 :(得分:1)

正确方便的方式:

您可以使用git-subtree命令从该文件夹中创建一个子模块。

制作子模块后,您将能够将项目作为两个git repos管理,一个嵌套在另一个中。 Eclipse必须理解这个结构并允许进行单独的提交。您还可以为每个子项目提供不同的远程存储库。

这是一本关于git-subtree的好手册: Detach (move) subdirectory into separate Git repository

不那么正确和方便。

您可以在主文件夹的.gitignore中添加该子文件夹,然后在其中启动一个新的repo。

答案 1 :(得分:0)

遗憾的是,在使用子模块和管理根文件夹和子文件夹时,Eclipse无法直观地指示单独的更改,因为Eclipse中的单独项目可以帮助我将内容分开组织。 这就是为什么我选择.gitignore根文件夹中的子文件夹并在子文件夹中创建一个单独的repo。

将这个带到Eclipse是一件麻烦事,因为Eclipse中有一些known bugs(具有讽刺意味)使EGit忽略.gitignore文件。这使得Eclipse坚持将它在子文件夹中找到的.git文件夹作为子模块提交,即使它应该忽略它。

我现在可以使用以下步骤设置所有内容:

  1. 将子文件夹的符号链接(Windows)创建到根文件夹旁边的文件夹。这有助于绕过Eclipse限制,即在本身已经是项目的文件夹的子文件夹中创建项目。
  2. 在将项目添加到Eclipse之前创建repos,否则 Eclipse不会使用.gitignore文件。即使你使用EGit 创造它们。
  3. Unix样式换行符编写.gitignore文件,使用正斜杠忽略/子文件夹。 Git本身可以很好地处理其他格式,但是如果不是那样写的话Eclipse就不会正确使用.gitignore。
  4. 清理东西;通过在项目树中隐藏子文件夹的项目中添加资源过滤器,将子文件夹隐藏在“站点”(根)项目中。这样,“管理工具”子文件夹中的文件只能通过自己的项目在Eclipse中访问。
  5. 我现在在Eclipse中有两个独立的项目,每个项目都有自己的Git存储库,即使其中一个在技术上是另一个的子文件夹。 我在这篇关于managing a subfolder as a project in Eclipse, Git and FTP

    的文章中写了一篇关于此的详细教程