簡體   English   中英

使用git repo作為通用基礎

[英]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的根目錄,而不是嵌套在子目錄中。 我要解決的實際問題是,每次我想啟動一個新項目時,都不需要重新創建我的包文件,目錄結構和一組經過精心構造的腳本。 如果我的配置位於子目錄中,那么我仍然需要創建對它們的引用,在我認為只是更多樣板代碼的地方。

另外,雖然我認為該概念與語言無關,但是我正在使用JavaScriptnodenpm

我認為,您可以使用Git子模塊 ,將cool-app-base用作cool-app-1的子模塊。 然后cool-app-1將在物理文件資源中擁有子文件夾cool-app-base ,而這兩個存儲庫的Git歷史記錄都不會受到干擾。

Git使用子模塊解決了這個問題。 子模塊允許您將Git存儲庫保留為另一個Git存儲庫的子目錄。 這使您可以將另一個存儲庫克隆到您的項目中,並使提交分開進行

您沒有提及您的編程語言。 但是大多數語言都帶有某種程序包管理器:

  • JavaScript:npm
  • Java:Maven,Gradle
  • Python:點子

如果您有使用這種語言的程序包管理器,請在您的應用程序項目中使用它來包含您的基礎項目。

如果沒有,我建議使用子樹而不是子模塊。 您可以將基礎項目包含在應用程序項目的子目錄中。 這就像將一個提交的整個文件系統復制到另一個倉庫中。 您可以選擇是否需要歷史記錄( squash )。

之后,您可以使用一個命令將其更新到較新的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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