簡體   English   中英

如何在項目中使用 2 個 GIT 存儲庫? (git子模塊,子樹)

[英]How to use 2 GIT Repos in a Project? (git submodules, subtree)

我們正在開發一個具有多個文件夾的項目,其中一些文件夾如下:-


貢獻
小販
語言
皮膚
配置

我們已經為 10 個不同的客戶端在 10 個不同的服務器上部署了項目,所有客戶端的前 3 個文件夾的內容都是相同的(通用),但是每個客戶端的后 3 個文件夾的內容不同,我想知道我們將如何維護這在 git 中。

目前,我們有 1 個存儲庫,其中包含前 3 個文件夾(所有客戶端通用)的代碼,其余 3 個文件夾的其余部分已通過使用 gitignore 避免。

我想知道我們是否可以為每個客戶端創建 10 個配置分支或存儲庫,其中包含最后 3 個文件夾的數據(每個客戶端各不相同),我已經完成了子模塊和其他一些解決方案,但如果有人可以為此提供一個良好的架構來指導我。

Submodules允許將外部存儲庫嵌入源樹的專用子目錄中,始終指向特定的提交。


git submodule

正如您所描述的那樣,將您的大項目分解為子項目。
將每個部分設置在自己的 repo 中

現在使用以下命令將每個子項目添加到您的主項目中:

git submodule add <url>

一旦將投影添加到您的存儲庫中,您必須初始化並更新它。

git submodule init
git submodule update

Git 1.8.2 --remote ,添加了新選項--remote

git submodule update --remote --merge

將從每個子模塊的上游fetch最新更改, merge them in ,並check out子模塊的最新版本。

正如文檔描述的那樣:

--remote

此選項僅對更新命令有效。 不要使用超級項目記錄的 SHA-1 來更新子模塊,而是使用子模塊的遠程跟蹤分支的狀態。

這相當於在每個子模塊中運行 git pull 。


但是,在 C 中的錯誤修復方案中,我將如何推送提交,這會影響與父層共享的代碼?

再次:使用子模塊會將您的代碼作為其內容的一部分放置在您的主項目中。 將它放在本地文件夾中或將其作為子模塊的一部分之間的區別在於,在子模塊中,內容被管理(提交)到不同的獨立存儲庫。


這是子模塊 - 另一個項目中的項目的說明,其中每個項目都是一個獨立的項目。

在此處輸入圖片說明


git subtree

Git子樹允許您將任何存儲庫作為另一個存儲庫的子目錄插入

submodule非常相似,但主要區別在於代碼的管理位置。 在子模塊中,內容被放置在一個單獨的存儲庫中並在那里進行管理,這允許您將其克隆到許多其他存儲庫。

subtree將內容作為根項目的一部分進行管理,而不是在單獨的項目中。

無需寫下如何設置它並了解如何使用它,您只需閱讀這篇出色的文章,它將解釋這一切。

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/

如果你想把你的項目分成多個倉庫,我建議你使用谷歌開發的用於管理Android項目的repo來管理多個git倉庫。 為每個客戶端編寫一個清單文件來維護您的所有項目非常方便。

不要將整個 git repo 部署到每個客戶端。 相反,將每個客戶端的配置存儲在一個目錄中,並有一個簡單的部署過程,只將適當的配置目錄部署到每個客戶端。 也就是說,在您的回購中,您將擁有:

  • 貢獻
  • 小販
  • 配置
    • 客戶端 1
      • 語言
      • 皮膚
      • 配置
    • 客戶端 2
      • 語言
      • 皮膚
      • 配置
    • ...

當需要部署到 client1 的服務器時,您不會發送整個 git repo 及其歷史記錄,而只會發送當前樹(只有 Client1 的配置):

  • 貢獻
  • 小販
  • 語言
  • 皮膚
  • 配置

為一個項目保留多個存儲庫並不是一種好方法。 如果您出於不同目的需要不同的配置,正如您所說,您應該使用不同的分支。

然后你會有

master -> 
   client_1
   client_2
   client_3
   ...

但是,將所有人保持在一起很困難。

另一種方法是為每個客戶端保留一個配置文件,並使用該文件加載不同的文件夾。

喜歡:

CLIENT_1: {
   LANG: 'languages_1',
   SKINS: 'skins_1'
},
CLIENT_2: {
   ...
   ...
}

並使用配置根據環境加載適當的文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM