6

我正在尝试使用 EGit 为我的 Eclipse 项目设置一个 git 存储库。但是,我无法从存储库中排除根/项目目录。也就是说,我的项目具有以下结构:

ProjectDirectory
    src
    war
    etc

我希望存储库包含srcwaretc,但不包含父目录ProjectDirectory。那是因为如果我想在我的工作区中克隆项目的副本,ProjectDirectory2,第二个项目的存储库现在将尝试创建第二个根目录,ProjectDirectory. 不幸的是,当我尝试使用 EGit 为项目添加存储库时,我似乎只能在项目文件夹本身上使用 Team > Share Project,而且我似乎看不到从存储库中排除根目录在 Eclipse 中。

关于如何使用 EGit 跳过存储库中的顶级目录的任何建议?我更喜欢能够在 Eclipse 中做所有事情,但如果没有办法,有没有办法在 git 之外以这种方式设置存储库,然后仍然可以在 git on 中定期使用 git 控件存储库跳过顶级目录?非常感谢。

4

4 回答 4

7

简短的回答是EGIT + M2E是可能的

诀窍是在配置 git repo 窗口中进行共享项目时 ->

确保在项目的父文件夹中使用或创建存储库被勾选

并确保单击创建存储库按钮

这样做的主要目的是在您的项目根目录中创建 .git 文件夹

不在您的项目根目录之上。

于 2015-12-18T16:51:30.097 回答
2

这是我的解决方案。虽然不是特别优雅 - 步骤都很简单,但它很有效,并且可以在大约 10 分钟内完成:

  1. 将远程 git repo 克隆到本地文件系统中 .. 例如: ~/git/project_repo_root

  2. 像往常一样创建你的eclipse项目..例如: ~/workspace/eclipse_project_root

  3. 从 Eclipse 中删除项目(但不是文件系统!)

  4. 打开文件管理器,将刚刚创建的eclipse项目从~/workspace/root移动到~/git

    mv ~/workspace/eclipse_project_root ~/git/

  5. 将 .git/ 文件夹从 repo 文件夹移动到 eclipse 项目根文件夹:

    mv ~/git/project_repo_root/.git ~/git/eclipse_project_root

  6. 使用 shell 进入 /eclipse_project_root/ 并对你想要在 repo 中的所有文件执行常用的命令行命令:

    git add <abc>; .. commit; .. push

  7. 返回 Eclipse 并转到 Git Perspective,然后单击“将现有的本地 Git 存储库添加到此视图”。选择你正在使用的 git repo,一旦你说好的,视图应该更新为该 repo 的条目。

  8. 在视图中看到本地 repo 后,您可以右键单击它并选择 Import Projects

  9. 回到您的主要开发视角(Java 等),您应该会在包资源管理器视图的根节点上看到带有 Git 标记的项目。

~~~~~

此时,您应该会看到刚刚移动的 eclipse 项目文件夹(在此处描述的示例中到 ~/git)

我意识到这比我希望的答案更冗长,但是对于这个特殊的挑战/解决方案..我不知道有更直接的方法来做到这一点。

至于上面描述的帖子,您应该始终包含 eclipse 项目根目录。现实是一些项目/客户端/等要求 git repo 不包含根文件夹。所以有时需要这样的解决方案

于 2014-04-09T21:07:10.313 回答
1

如果您有 maven 项目,您通常希望创建一个没有 egit 创建的项目文件夹的存储库。根据我的经验,使用 egit 插件是不可能的。但可以从 git 命令行轻松完成。

首先将现有的 eclipse/maven 项目从 eclipse 工作区移动到 git 文件夹中(这也是 egit 插件所做的):

mv myproject ~/git/

接下来创建一个新的 git 存储库

cd ~/git/myproject
git init

现在创建一个 .gitignore 文件并将其放入新的存储库文件夹(~/git/myproject/.gitignore)。这是 .gitignore 文件的示例:

# ignore all bin directories
# matches "bin" in any subfolder
bin/

# ignore all target directories
target/

# ignore all files ending with ~
*~ 

# ignore eclipse directories and project files
.settings/
.project
.classpath

最后用你的项目内容初始化你的新存储库

git add *
git commit -m "My initial commit message"

而已。现在您可以重新启动 eclipse 并从新的 git 存储库重新导入项目。进入您的 Eclipse egit 存储库视图并选择“导入现有项目”。

于 2013-09-28T09:52:04.713 回答
1

您应该出于多种原因提交项目根目录:

  • 如果您只提交项目的子目录,您将错过隐藏在项目根目录下的文件和文件夹(例如 .settings 目录和其他目录)。这些也需要提交,否则您的项目将丢失信息并且可能不会在另一台机器上导致相同的结果。
  • 您希望在同一个工作空间中第二次克隆同一个存储库的愿望听起来很像您应该重新阅读有关 git 分支的信息。在 git 中,分支之间的切换是在眨眼之后完成的,因此在处理项目的不同功能、版本或其他不同版本时应该使用分支。
  • Eclipse 项目名称和磁盘上的底层文件夹名称不需要相同(创建新项目时请注意复选框“使用默认位置”)。因此,您可以签出具有不同名称的项目的第二个克隆。
  • 如果您稍后将更多项目添加到您的工作区(例如测试项目),您将无法轻松地将它们共享到同一个 git 存储库中,因为这些附加项目的内容会与存储库中第一个项目的子目录混淆。
于 2013-03-22T14:53:42.457 回答