[英]Create Child Git Repository
我有一個名為Template的TFS GIT存儲庫。 我們想要從中創建多個子存儲庫,然后能夠將更改從父存儲庫推送到子存儲庫。
順序為:
第1部分
第2部分 -將來的某個時候
我環顧四周,找不到第二部分的實現方法。 有什么想法嗎?
雖然我認為這是一個相對罕見的用例,這是共享代碼的最佳方法,但讓我們來看看它會發生什么。
如果你想在Template
回購推更改App1
回購,那么內Template
,你需要配置App1
為遠程。
/repos/template $ git remote add App1 url/of/app1/repo
然后, Template
就像貢獻給App1
任何本地存儲庫一樣。 這意味着每次您基於模板創建新的應用程序存儲庫時,都必須將其添加為Template
庫中的另一個遠程存儲庫。 還要注意, git push
只能與一個遠程對象交互,因此您可能需要組合一個腳本來將更新推送到所有應用程序存儲庫。
( Template
一句,這感覺很落后-我認為您最好將Template
設置為每個應用程序倉庫的遠程站點,並將每個應用程序倉庫設置為監視和pull
Template
更改。這似乎更像git友好的方式來做您想做的事情-當我們繼續描述push
過程的實際工作方式時,這將反映在復雜性中。但是,如果您想要推送過程,則可以讓Template
“貢獻”到每個應用程序倉庫通過將應用程序回購視為遙控器是一種方法。)
現在的問題是, push
無法執行合並。 因此,您需要為每個應用程序回購都擁有一個僅在將Template
推送到Template
時才前進的分支,然后仍然有人必須將這些更改合並到用於應用程序本地更改的分支中。 從Template
推送到應用程序倉庫時,必須確保將新更改推送到應用程序倉庫的模板分支。
實際上,不管使用基於push
還是pull
的機制,最好都擁有這樣的分支。 唯一的區別是Template
驅動分支的更新方式。 但是,如果您使用的是基於拉的模型,則每個存儲庫將負責其單個模板分支與模板存儲庫的上游關系,而不是模板存儲庫(和/或向其發出的推送命令)必須維護所有模板分支關系。
無論如何,那么在App
您會遇到類似
T0 <--(template)
\
A -- B <--(master)
過一會兒,您可以在Template
庫中進行一些更改,然后push
這些更改push
送到App
的template
分支
T0 -- T1 <--(template)
\
A -- B <--(master)
然后有人將必須將template
合並到master
並解決所有由此產生的沖突。
T0 ------ T1 <--(template)
\ \
A -- B -- M <--(master)
這可以根據需要重復。 當然,如果應用程序倉庫中有多個分支,則需要弄清楚如何將新模板更改傳播到每個分支。 如果每個分支中有許多分支和沖突需要解決,那可能會變得很乏味(盡管您可以利用git rerere
來減少麻煩)。 這就是為什么我認為,找到一種方法來分離通用代碼並使用構建系統將其視為依賴項,而不是基於push
或pull
的方案,如果它對通用類型可行的話,可能會更好。您正在處理的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.