4

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

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 提取到单独的项目中。我想保持第一个回购完好无损......

4

1 回答 1

1

我认为您可能对git存储库的结构感到困惑。我构建项目的方式是为每个项目创建一个存储库,然后将它们添加到Repo 1超级Repo 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

由于submoduleurlProject_1指向相同的位置,当您git push在其中一个submodule目录中时,Repo_1或者Repo_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
于 2012-06-13T20:11:56.673 回答