[英]How can I create a git repository that contains files from another repository?
我有兩個存儲庫,A 和 B。A 的文件結構是:
/scripts /local-data 等
B的文件結構是一樣的。 區別在於 B 應該是 A 的超集。 /scripts all scripts/* from A + 特定於項目 B 的腳本(即來自 A 的文件與特定於 B 的腳本在同一目錄級別)
A是github上的開源。 B 在服務器上是專有的。 每當 A 更新時,B 中的 A 文件也應更新。
我該如何設置?
如果您目前有 1 個回購,您應該將其拆分為不同的回購。
使用split
命令
subtree split
git subtree
git-subtree
- 將子git-subtree
Merge
在一起或split
存儲庫split
為子樹
git subtree split -P <name-of-folder> -b <name-of-new-branch>
現在為您的存儲庫創建子模塊或子樹。
首先讓我們解釋一下子樹和子模塊之間的主要區別是什么:
它們都用於在現有回購中擁有另一個回購。 主要區別在於 git submodule
是獨立的自包含存儲庫,而subtree
將日期存儲在父(原始)存儲庫中。
Now let's dig in and explain in more details:
有沒有我可以遵循的更簡單的例子?
Submodule
是一個獨立的git 項目,所以代碼將被檢出到根文件夾下的一個新文件夾,它不是你的主分支的一部分。
您的根文件夾將包含一個子模塊文件,您必須在您制作的每個克隆上init && update
它。
# Add the desired submodule to your code base
git submodule add <url>
您必須運行兩個命令:
git submodule init
初始化您的本地配置文件,以及
git submodule update
從該項目中獲取所有數據並查看您的超級項目中列出的相應提交:
所以完整的腳本是這樣的:
git submodule add <url>
git submodule init
git submodule update
您只需要在根文件夾中,然后添加子模塊文件夾。
git submodule add <url>
現在,當您克隆項目時,您只需要初始化並更新子模塊
git submodule init
git submodule update
Git 1.8.2 提供了一個新選項 --remote
git submodule update --remote --merge
將從每個子模塊的上游獲取最新更改,合並它們,並檢查子模塊的最新版本。
git subtree
Git子樹允許您將任何存儲庫作為另一個存儲庫的子目錄插入
與submodule
非常相似,但主要區別在於代碼的管理位置。 在子模塊中,內容被放置在一個單獨的存儲庫中並在那里進行管理,這允許您將其克隆到許多其他存儲庫。
subtree
將內容作為根項目的一部分進行管理,而不是在單獨的項目中。
無需寫下如何設置它並了解如何使用它,您只需閱讀這篇出色的文章,它將解釋這一切。
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.