2012-06-13 90 views
4

我有一個git倉庫,其中包含一個包含多個項目的Visual Studio解決方案。我有我想要添加的項目之一,在第一回購另一git倉庫(也VS):在另一個repo中共享git倉庫中的子項目

Repo 1: 
Project_1 
Project_2 
Project_3 

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

是否有可能只共享與另一git倉庫git的回購協議的一個項目?當我在第二個倉庫中工作時,我希望能夠對屬於第一個倉庫的項目進行提交/拉出/推送,並且當我打開第一個倉庫時,我希望能夠獲得對第一個倉庫的更改項目在第二次回購。

我看過git submodules但我不認爲這會幫助我,因爲我不想從第一個git倉庫中提取共享項目到另一個倉庫。我想保持第一個回購完整...

+0

我不知道我理解你的關心與'git的子模塊'。這似乎是你正在描述的設置正確的事情。 – 2012-06-13 16:52:52

+0

那麼Project_1可以成爲回購2的子模塊,但仍然是回購1的一部分? – Zeno

+0

我無法得到格式我想解釋我的回覆,所以我把它放入一個答案。讓我知道它的任何部分是不清楚的。 – 2012-06-14 00:32:38

回答

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網址Project_1指向同一個位置,當你git pushsubmodule目錄中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
相關問題