2

我使用Git版本控制研究,我有一個使用相同的基本目錄多個項目,但也有一些變化是由具體的項目。如何跟蹤與同一核心文件單獨項目的git

有沒有一種方法,我可以跟蹤與同混帳回購協議(在我的情況根/私營/芯)超摺疊的以及公共和私人項目的具體目錄以及。 另外,如果我做一個項目的核心文件的變化,我想這變化在其他項目中取得混帳回購協議以及。

我已經想出的辦法是使在根文件夾中的git倉庫,然後進行分支項目,而不是跟蹤其他項目文件。但使用這種方法,我必須在其他項目中合併核心更改,並且還存在一種邏輯錯誤,因爲在這種情況下,分支將用作項目。

我已經看過成子模塊藏漢,但這似乎不是最好的解決方案以及。如果有一個解決方案需要我改變我的項目目錄系統,我可以做到這一點,儘管我想單獨保留公共,私​​人和核心導演。

我此刻的目錄

簡單的例子:

    • 私人
      • 核心
      • 項目
        • PROJECT1
        • 項目2
    • 公共
      • PROJECT1
      • 項目2

在私人項目文件夾中有核心PHP擴展是特定項目和公共項目文件夾僅樣式表,JavaScript和索引。

回答

0

我已經看過成子模塊藏漢,但這似乎不是最好的解決方案,以及

然而,它可能是一個有效的解決方案:

  • private父回購,包括coreproject1project2作爲子模塊
  • public父母回購,包括project1 a ND project2作爲子模塊

每次修改的子模塊(如project1private),則需要:

  • 提交,將其推到上游回購(相同父回購private),
  • 進入另一方回購的相同的子模塊(public/project1
  • 混帳拉

不完全是微不足道的,但可以讓你保持一個確切的參考由每個父回購所使用的配置(「配置」是你所需要的子模塊的SHA1的確切名單)

1

取而代之的子模塊(有自己的限制 - 「你不能在主項目中修改子模塊的內容」 - 並且將改變你平常的Git-workflow的)你可以考慮git-subtree,在這種情況下核心將被添加爲子樹(但仍然存在爲單獨回購)在所有超級項目中。 Use-case of git-subtree在一種讓人想起你的狀態的情況下

+0

「你不能在主項目中修改子模塊的內容」?當然,你可以:http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194。這是一個組件方法,而不是一個系統方法與子樹:http://stackoverflow.com/questions/769786/vendor-branches-in-git/769941#769941 – VonC

+1

@VonC - 閱讀**正確的**來源在回答之前。 Git-boys讓我瘋狂!我沒有提到'git update',我引用了[git-submodule man](http://schacon.github.com/git/git-submodule.html),這不是我的措辭**「...歷史的兩個項目仍然保持完全獨立,您不能從主項目「**」內修改子模塊的內容。用簡單的英文表示:如果修改了超模塊和子模塊**中的文件**,那麼您不能**一次全部提交*(至少我是這樣讀的) –