[英]using submodules in git for the timid
我在一個只有幾個層的項目中工作,每個層都有獨立的子項目。
它看起來像這樣:
[ Project C ] [ Project D ] C and D uses B and therefore A
[ Project B ] B has all source code in a and adds more
[ Project A ]
將上游設置為父存儲庫並發出git pull upstream
可以很好地從上層項目中獲取更改。
但是,在 C 中的錯誤修復方案中,我將如何推送提交,這會影響與父層共享的代碼?
如果我從項目 A 發出git pull project-D
,它也會合並在該層添加的所有源代碼。
我也考慮過使用sub-trees
或submodules
,但它看起來仍然很復雜。
* 我也考慮過使用
sub-trees
或submodules
,但它看起來仍然很復雜。*
這正是您需要使用的。 讓我解釋一下它是多么的簡單而不是那么復雜
Submodules
允許將外部存儲庫嵌入源樹的專用子目錄中,始終指向特定的提交。
git submodule
像到目前為止一樣將您的大項目分解為子項目。
現在使用以下命令將每個子項目添加到您的主項目中:
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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.