【问题标题】:add new Project to existing github Repo将新项目添加到现有的 github 存储库
【发布时间】:2013-01-04 11:27:00
【问题描述】:

我正在开发一个客户端-服务器应用程序,我想将两个项目(客户端和服务器)存储在 github 上的同一个 github 存储库中。 我在 macOS 上。 我使用 Eclipse git 插件为客户端项目创建了一个本地存储库,然后将其提交到 github。效果很好。

现在我想将服务器端项目添加到这个 Repo 中,可能在一个新的子文件夹中。这部分是在与客户端部分不同的工作空间上开发的。我尝试使用 Eclipse 共享项目,但它告诉我没有现有的 repo。我认为这是因为系统的两个部分是使用不同的 Eclipse IDE 开发的。

我试图在第一个下创建一个新的 repo,但它变得一团糟,因为 github 无法理解哪个是 master。 我正在使用 GitHub 客户端应用程序来管理对远程仓库的提交。

有人可以帮助我吗?

谢谢

【问题讨论】:

  • 不使用两个独立的存储库有什么特别的原因吗?

标签: git github commit repository


【解决方案1】:

它可能不会直接回答你的答案,但我认为这种特殊情况可以通过 Git 的 submodules 等功能来解决。

无论如何,在这种情况下,您需要在某个地方托管两个不同的存储库。但是在子模块的帮助下,您可以告诉 Git 一个 repo 的文件应该位于另一个 repo 的目录树内。不会造成你描述的混乱!

例如,假设您将项目托管为 github.com/user/Clientgithub.com/user/Server 存储库。转到Client 存储库的文件夹并执行以下操作:

git submodule add git@github.com:user/Server.git src/server

这会将具有给定地址的 repo 克隆到您指定的文件夹中(在此示例中为 src/server)。

之后,您必须提交更改。虽然添加了很多文件,但在提交差异中不会有很多变化:特殊文件中只会有一条简短的记录说这样的存储库现在是一个子模块。也就是说,Server 的文件实际上并未存储在 Client 存储库中,仅存储对它们的引用。这就是 git 子模块的强大之处。

请注意,在此之后,当您在其他地方克隆 Client 存储库时,默认情况下不会获取其子模块。您必须使用git submodule update --init 来初始化子模块。

还请注意,对Server 子模块的引用指向它的特定修订版。对Server repo 进行一些更改后,您可能需要转到Client repo,导航到子模块目录(在本例中为src/server)并执行简单的git pull 并在Client repo 中提交更改。同样,不会有巨大的差异,只会提交对子模块的新 reference

作为带有子模块的存储库的示例,您可以查看我的 Vim 设置目录的存储库:它的 bundle 文件夹中有许多插件,它们都是 git 子模块。 GitHub 很好地展示了它们,如果它是 GitHub 托管的,则可以轻松一键导航到子模块 repo。

附注如果这一切与您想要的没有任何共同点,而您只是想将文件夹 Server 添加到 repo Client,您可以将 Server 复制到客户端删除所有跟踪从Server 目录(如果有的话)中删除.git 中的Git。现在您只需拥有一个 repo,提交所有这些更改并继续。这样做的缺点是完全丢失了Server repo 的历史记录——这在项目的初始阶段并不是什么大问题。

【讨论】:

    【解决方案2】:

    我认为,这不是 git 的工作方式。 Git 需要一个存储库的根目录,所有要提交的文件夹和文件都必须在这个目录中。

    【讨论】:

      【解决方案3】:

      使用以下命令克隆您现有的仓库:

      git clone https://github.com/company/our_repo.git

      手动将您的项目文件夹带到所需的位置,即trunk/bin

      现在提交,然后使用以下命令推送 repo:

      git commit -m "message"
      git push origin master
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-23
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 2020-05-12
        • 2013-01-20
        相关资源
        最近更新 更多