[英]Using git repo as a common base
假設我有一些代碼構成了一些很酷的東西的基本框架。 我把它放在一個倉庫中,我稱之為cool-app-base
。
現在,我對一些很棒的應用程序有一些好主意。 我希望他們使用cool-app-base
並從那里構建。 自然,我可以選擇clone
和孤立,以及fork
和重命名等。為示例起見,假設我為自己想要的東西做了最好的事情,並創建了cool-app-1
。
我不打算從cool-app-1
貢獻回 cool-app-base
,所以任何一個都可以。 但我確實希望能夠將我對cool-app-base
所做的任何更新都帶入cool-app-1
。
關鍵是, cool-app-1
不必關心cool-app-base
的歷史。 我想將這些更新視為壓縮的提交,因此更新可以包含“使用最新的cool-app-base
更新”的提交消息並完成。 這使fork
吸引力降低了,但是聽起來我唯一的選擇是手動將cool-app-base
代碼更改合並到cool-app-1
以便我可以控制提交歷史記錄。
我的問題是:我該如何做得更好/“正確”? 我確定我可以使用一些時髦的git merge
選項,但是我還不很精通,因此無法自信地探索它們。
澄清: cool-app-base
不是庫,而是一組配置文件。 盡管可以將它們分解並單獨導入,但我的目的是保持它們捆綁在一起。 我希望cool-app-base
的文件形成cool-app-1
的根目錄,而不是嵌套在子目錄中。 我要解決的實際問題是,每次我想啟動一個新項目時,都不需要重新創建我的包文件,目錄結構和一組經過精心構造的腳本。 如果我的配置位於子目錄中,那么我仍然需要創建對它們的引用,在我認為只是更多樣板代碼的地方。
另外,雖然我認為該概念與語言無關,但是我正在使用JavaScript
和node
和npm
。
我認為,您可以使用Git子模塊 ,將cool-app-base
用作cool-app-1
的子模塊。 然后cool-app-1
將在物理文件資源中擁有子文件夾cool-app-base
,而這兩個存儲庫的Git歷史記錄都不會受到干擾。
Git使用子模塊解決了這個問題。 子模塊允許您將Git存儲庫保留為另一個Git存儲庫的子目錄。 這使您可以將另一個存儲庫克隆到您的項目中,並使提交分開進行 。
您沒有提及您的編程語言。 但是大多數語言都帶有某種程序包管理器:
如果您有使用這種語言的程序包管理器,請在您的應用程序項目中使用它來包含您的基礎項目。
如果沒有,我建議使用子樹而不是子模塊。 您可以將基礎項目包含在應用程序項目的子目錄中。 這就像將一個提交的整個文件系統復制到另一個倉庫中。 您可以選擇是否需要歷史記錄( squash
)。
之后,您可以使用一個命令將其更新到較新的版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.