如何让 egit 尊重多项目 git 存储库?

Posted

技术标签:

【中文标题】如何让 egit 尊重多项目 git 存储库?【英文标题】:How do I make egit respect multi-project git repository? 【发布时间】:2012-10-25 17:00:50 【问题描述】:

我有一个包含多个 Eclipse 项目的 git 存储库。导入 eclipse 项目很容易,但我不知道如何让它们与 eGit 插件一起工作。

下面的树输出显示了我正在查看的目录结构的基本内容。

bash-3.2$ tree -a
.
|-- .git
    ...
|-- .gitignore
|-- apps
|   `-- example-app
|       |-- .classpath
|       |-- .project
    ...
|-- cs-build.xml
 `-- services
     `-- example-app-service
         |-- .classpath
         |-- .project
         ...

如何处理这两个项目并让 e​​clipse 识别它们来自同一个 git 存储库?

【问题讨论】:

我想花一点时间说:我认为这个问题的真正解决方案是不使用 Egit。我所拥有的所有经验,以及我认识的每个人的所有经验都非常糟糕。它弄乱了你的回购。提交显示在 Egit 但不在 github 中,反之亦然。我知道有几个人使用 Egit 做一个项目并重新克隆整个 repo 成为每周的常规任务,因为它会变得如此混乱。我恳请您只使用命令行——它也将解决这个问题。 我没有同样的经历。 EGit 非常适合我,并直接提供关于我的工作目录相对于存储库的状态的视觉反馈。我只是无法克服一个“Eclipse 项目 = 一个 Git 存储库”的问题。我正在寻找这个解决方案。 你在哪里有困难?从 Git Repositories 视图导入它们通常可以正常工作。我唯一一次看到它搞砸了,额外的 .project 文件散布在实际项目之上。 两个项目好像同名(example-app)?这在 Eclipse 中通常是不可能的,项目共享一个命名空间,因此必须有不同的名称。对于 EGit 来说,在一个仓库中拥有多个项目是没有问题的(EGit 仓库本身就是这样的)。 我的错,树输出不正确,客户端应用程序称为“example-app”,服务器应用程序称为“example-app-service”。问题是eclipse可以很好地导入项目,但不知道它们在Git存储库中......迫使我从命令行使用Git并拒绝我eGit反馈,这使我可以方便地使用存储库。 【参考方案1】:

啊哈!我已经想通了!关键是在将存储库本身建立在磁盘上的某个位置之后,在 eclipse 中导入项目。在向导期间,Eclipse 找到项目并将它们中的每一个链接到存储库。在上面的示例中,我的 Eclipse Package Explorer 现在显示

example-app [example-app master]
example-app-service [example-app master]

给我希望的线索是这里的教程:http://www.vogella.com/articles/EGit/article.html#tutorial_multiprojects

事件的确切顺序类似于......

    文件、导入... Git,来自 Git 的项目,下一步> 本地,下一个> 添加...、浏览、完成 从4.中选择repo,下一步> 导入现有项目,下一步> 选中所需项目旁边的复选框,然后单击完成

我离开命令行并返回 Eclipse,并通过遥控器反馈关于 repo 的状态。

我仍然不太确定将多个 Eclipse 项目保存在一个存储库中是否是一个好主意,但这不是我的存储库,它只是我必须工作的地方。

【讨论】:

“我仍然不确定将多个 Eclipse 项目保存在一个存储库中是否是个好主意。”这取决于...如果代码更改跨越多个项目(取决于它们的组织方式,这可能会或多或少地发生;横切关注点的更改肯定会这样做)你可能很高兴有一个单一的历史来处理.我们过去至少将所有项目都放在一个 subversion repo 中;现在尝试使用 git。 非常感谢。这很好用。但是我遇到了另一个相关的问题,EGit 没有获取我的*** .gitignore 文件。所以我在我的 Git 暂存视图中看到了数千个未暂存的更改。看起来你有一个类似的*** .gitignore 配置,这对你有用 EGit 吗?

以上是关于如何让 egit 尊重多项目 git 存储库?的主要内容,如果未能解决你的问题,请参考以下文章

如何将移动的 git 存储库与其在 Egit 中的原始项目重新连接?

包含多个项目发布版本的 Git (EGit) 存储库的组织

如何使用 EGit 克隆创建 Eclipse 项目

EGit 的“自动共享位于 git 存储库中的项目”选项是啥意思?

用于推送现有项目的Egit插件配置

Egit:右键单击不显示 GIT 命令