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

Posted

技术标签:

【中文标题】如何使用 EGit 克隆创建 Eclipse 项目【英文标题】:How to create Eclipse project with EGit clone 【发布时间】:2012-05-03 02:19:43 【问题描述】:

在使用 SVN 十年后,我终于开始尝试使用 Git。我已经在服务器上设置了 Git、Gitolite 和 GitLab,并已成功将代码添加到我的本地存储库、提交、克隆存储库并将代码推回存储库。到目前为止,一切都很好。现在进入EGit...

我已经使用 Git Repository Exploring 视图克隆了一个存储库,路径语法如下:

ssh://dexter:vaultanalyser.git

(在 GitLab 中,存储库被称为项目,所以我假设每个 Eclipse 项目我应该有一个存储库?而不是包含多个项目的 SVN 样式的单父存储库? )

这会将存储库导入:

/Users/mattpainter/git/vaultanalyser

我希望这一步会自动为我创建一个包含所有源代码的 Eclipse 项目,但事实并非如此。我尝试伪造目标目录,使其在我的工作区中,但这也不起作用。

如何在 Eclipse 中获取可用的克隆源? This site 暗示如果你创建一个与存储库同名的项目,这一切都会神奇地工作,但事实并非如此(是的,我知道这篇文章是关于 Github,而不是 GitLab,但我认为两者是足够接近手头的任务)。

然后我尝试在 Eclipse 中创建一个项目并共享它 - 但是整个项目在存储库中显示为一个子文件夹。如果存储库确实类似于项目,那么这并不是我真正想要的。

我查看了其他看起来相关的 *** 主题,但我担心我仍然缺少一个关于它应该如何工作的关键理解,并且到目前为止看起来非常复杂。

帮助?

【问题讨论】:

【参考方案1】:

在 GitLab 中,存储库被称为项目,所以我假设每个 Eclipse 项目应该有一个存储库?

是的,但 GitLab“项目”不一定是 Eclipse 项目。 它不必遵循 SVN 结构,如“Eclipse reference directory outside eclipse project directory but within repository”所示。

您需要做的就是创建一个 Eclipse 项目,将源目录指定为 not 在默认路径(Eclipse 工作区)中,但在您克隆存储库的任何位置(如“@987654322”中所述@")。 这样,您刚刚声明(并在 Eclipse 工作区中引用)的 Eclipse 项目在 Git 存储库的根目录中具有其文件(.project.classpath)。 然后 Egit 可以很好地管理该项目。 也可以直接用 Egit 导入:“Eclipse + EGit: clone project into workspace”。


正如OP nullpainter 报告如下:

服务器上.git/objects 文件夹中的无效权限加剧了最初的问题。 在文件夹上运行chmod git:git -R * 解决了这个问题

他在下面详细介绍了正确的设置。

【讨论】:

谢谢;那是一种享受。让我感到困惑的是,如果您选择共享项目,目标位置是 /Users/mattpainter/git//,这不是我想要的。使用链接源时,它仍会显示此内容,但提交时会同时显示 /src/ 和 src/。非常混乱...! 实际上,这个问题可能是因为我刚刚创建了一个指向 repo 的链接 src 文件夹 - 我的 Eclipse (Juno) 版本似乎没有“从现有源创建项目” ,其功能与您描述的方式相同。我目前在我的 Eclipse 工作区中有 .project.classpath,我认为这是可行的。 对。 “从现有源创建项目”已合并到标准的“新建 Java 项目”对话框中。执行此操作并在共享时“在项目的父文件夹中使用或创建存储库”以避免有关 .project 文件冲突的错误,然后我收到以下错误:An internal Exception occurred during push: dexter:vaultanalyser.git: Missing tree 32f2fe4f5ee5a4e2e7265ac5068a2b17a30b32e4 哈!从控制台再次尝试并遇到权限不足错误后,我发现服务器上的“对象”文件夹中的某些目录归根用户所有。改变这些让一切都变得快乐!【参考方案2】:

为了扩展@VonC 的答案,让 EGit 和 Eclipse 正常运行的步骤是:

    从 EGit 中选择“克隆 Git 存储库”,接受所有默认值。这将在您工作区之外的某个位置的 git 父文件夹中创建一个文件夹。

    创建一个新的 Eclipse 项目。我正在使用 Java,但我认为其他语言也有类似的步骤。在第一个对话框中,取消选中“使用默认位置”,然后选择在步骤 1 中创建的存储库文件夹。接受所有默认值。

    从您的新项目中选择 Team > Share Project...。选择 Git,然后勾选“在项目的父文件夹中使用或创建存储库”。

现在您可以从 Eclipse 中将您的代码和 Eclipse 点文件推送到您的 git 存储库。

(我最初的问题是由于服务器上 .git/objects 文件夹中的无效权限而复杂化 - 在文件夹上运行 chmod git:git -R * 解决了问题)

【讨论】:

感谢您的反馈 (+1)。我已将其包含在我的答案中以提高知名度【参考方案3】:

我使用命令行检查它 - 然后在此基础上构建我的项目。事实上,我最终使用命令行 git 进行大多数操作。 EGit 对于查看差异很有用,但我发现命令行有更多的权力和控制。 Git 主要是为开发人员提供大量的权力和控制权。

【讨论】:

以上是关于如何使用 EGit 克隆创建 Eclipse 项目的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse EGit 在 Pulls 后更改文件夹名称

egit:设置gitignore忽略所有eclipse项目文件

Eclipse添加EGIT方法

如何让 EGIT 识别一个 Eclipse 项目中的两个 Git 存储库?

Egit 工作目录与 Eclipse 中的项目

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