簡體   English   中英

膽小的人在 git 中使用子模塊

[英]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-treessubmodules ,但它看起來仍然很復雜。

* 我也考慮過使用sub-treessubmodules ,但它看起來仍然很復雜。*

這正是您需要使用的。 讓我解釋一下它是多么的簡單而不是那么復雜

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.

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