在另一个仓库中的git仓库中共享子项目

时间:2012-06-13 14:52:08

标签: visual-studio git

我有一个git存储库,其中包含一个包含多个项目的Visual Studio解决方案。我有另一个git存储库(也是VS),我想在第一个repo中添加一个项目:

Repo 1:
Project_1
Project_2
Project_3

Repo 2:
Project_4
Project_5
Project_1 (Same as Project_1 above)

是否可以与另一个git存储库共享git repo中的一个项目?当我在第二个回购中工作时,我希望能够提交/拉/推到属于第一个回购的项目,当我打开第一个回购时,我希望能够获得我对第一个回购所做的更改项目在第二次回购。

我看过git submodules,但我不认为这会对我有所帮助,因为我不想将第一个git repo中的共享项目提取到一个单独的项目中。我想保持第一个回购完好......

1 个答案:

答案 0 :(得分:1)

我认为您可能会对git存储库的结构感到困惑。我构建项目的方法是为每个项目创建一个存储库,然后将它们添加到Repo 1Repo 2超级项目中。

<强>图形

Git                  # Main git project directory
  /Projects
    /Project_1       # Each one is its own Git repository
    /Project_2
    /Project_3
    /Project_4
    /Project_5

  /Repos             # The main repositories that utilize the projects
    /Repo_1          # The super project directory
      .gitmodules    # The .gitmodules file created by 'git submodules add'
        --> submodule with url=../../Projects/Project_1  # entry in .gitmodules
        --> submodule with url=../../Projects/Project_2
        --> submodule with url=../../Projects/Project_3
    /Repo_2
      .gitmodules
        --> submodule with url=../../Projects/Project_1
        --> submodule with url=../../Projects/Project_4
        --> submodule with url=../../Projects/Project_5

由于submodule的{​​{1}}网址指向同一位置,因此Project_1 git push submodule目录中的Repo_1Repo_2您实际上是将更改推送到同一个项目存储库。

有两个关于在两个超级项目之间同步更改的问题,因为git允许两个不同的超级存储库中的相同submodule指向不同的修订版。有关更多信息(例如如何推送,提交更改和更新submodules),我建议您结帐:

  1. http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
  2. http://git-scm.com/book/ch6-6.html