在公司寫專案,基本上很多專案都會有一些通用的頁面,比如登入頁,個人中心這種基礎頁面,每次複製會覺得很麻煩,後期修改也要同時改好幾個地方.本子著解耦的思想開始想解決方法.最先想到npm安裝包引入,不過這種事完整頁面,不是元件功能,npm不適用.後來找到了乙個git subtree,倉庫公用
git subtree就是如果多個專案有通用資料夾,將檔案抽離出去,在git上新建乙個倉庫,適用git subtree相關命令引入,後期修改可以再子倉庫修改,也可以在父倉庫修改,在使用命令同步**就可以了.是不是很適合這種場景?所以就操練起來吧
我的專案裡這個design檔案我需要抽離出來通用,在git上新建乙個專案,名稱為design,將這個design檔案剪下過去,上傳到遠端,父倉庫裡把這個檔案刪除
然後在父倉庫根目錄執行命令git subtree add --prefix=src/pages/design --squash
然後出現了乙個錯誤
這個錯誤是因為我在git位址後面沒有指定分支 修改一下 git subtree add --prefix=src/pages/design master 這樣就可以了
然後說明一下這句指令, git subtree add 是新增子倉庫到父倉庫裡 --prefix=src/design新增到父倉庫的src/pages目錄下,檔名為design 之後的是你git子倉庫的檔案位址,複製網頁的位址就成 master是倉庫分支名 上一句我有新增--squash 這個是不需要同步子倉庫的歷史提交記錄,這裡沒什麼提交記錄,不加也可以
這一步還可能會出現下面這個錯誤,這是因為你父倉庫有改動的內容沒提交,提交後再引入就可以了
這樣檔案裡就有design這個檔案了,引用按照和正常檔案的使用一樣
在子倉庫修改一些內容,提交上去
然後父倉庫使用命令 git subtree pull --prefix==src/pages/design master --squash
這樣子倉庫的提交內容就同步過來了
在父倉庫中修改子倉庫的內容,提交上去
然後在父倉庫使用命令git subtree push --prefix==src/pages/design design master將修改的內容提交到子倉庫
這裡的命令有一點改變,將git位址換成了design,因為每次輸入git位址很麻煩,可以使用git remote add -f design 將位址替換長指定命令,design是我指定的替換位址命令,可以改成別的
在子倉庫的提交記錄裡就可以看到父倉庫推送的內容了
如果其他專案也需要引入這個檔案,就是同樣的操作步驟
文章參考:
Git Subtree 的介紹及使用
有專案a 專案b。有libraryc,為專案a的子專案 子目錄。專案b也想用libraryc,作為自己的子專案 子目錄。希望 同步,維護方便,更新迭代。git submodule orgit subtree拆分libraryccd 專案a git subtree split p libraryc b...
Git Subtree 的介紹及使用
有專案a 專案b。有libraryc,為專案a的子專案 子目錄。專案b也想用libraryc,作為自己的子專案 子目錄。希望 同步,維護方便,更新迭代。git submodule orgit subtree拆分libraryccd 專案a git subtree split p libraryc b...
git subtree詳解及使用場景
使用場景 1.gitlab github上已有兩個專案,分別是project web project mobile 2.現在需要將兩個專案合併在乙個專案裡project 3.新專案project裡包含兩個檔案,分別是web和mobile 操作步驟 1.gitlab github上新建專案projec...