此文已由做者張磊受權網易雲社區發佈。
git
歡迎訪問網易雲社區,瞭解更多網易技術產品運營經驗。github
目前對 git 倉庫拆分的已有實現之一,並無合併到 git 發行版中。項目的地址是 github.com/ingydotnet/…安全
首先建立主倉庫 subrepo-master,隨意提交一次文本,接着拉取到本地bash
創建子倉庫 subrepo 和 subrepo1,隨意提交一次文本框架
Windows 安裝稍顯麻煩,經過安裝 Cygwin ,並配置環境解決的。機器學習
添加子倉庫學習
git subrepo clone <repository> [<subdir>] [-b <upstream-branch>] [-f] 這裏的 repository 能夠用添加的 remote 的別名。子倉庫添加完成,會發現目錄多了一個,並且進去後發現有一個文件 .gitrepo,打開看到記錄了 subrepo 執行的一些信息。同時運行 git log 發現多了一次提交。因爲存在 .gitrepo 文件,就不須要像 git-subtree 同樣每次都要指定 remote url,後續能夠直接用目錄名更新。fetch
git subrepo clone (merge) --branch=a subtree1 subtree1
subrepo: subdir: "subtree1" merged: "8a62c0e" upstream: origin: "subtree1" branch: "a" commit: "8a62c0e"
git-subrepo: version: "0.4.0" origin: "???" commit: "???"複製代碼
更新子倉庫ui
對子倉庫遠端作一次修改,而後更新它。git subrepo pull subrepo1,接着運行 git log,會發現這裏像添加子倉庫同樣自動作了一次提交url
修改主倉庫、子倉庫
對主倉庫、子倉庫作修改並提交,同時修改遠端主倉庫、子倉庫。這裏若是有衝突,修改衝突的地方有點奇怪,是放在 .git/tmp/<dir> 下面,仔細看提示步驟,按照步驟走就能夠順利提交了。不過在這裏也能夠體驗看設計思路,確實有兼容 git-subtree 和 git-submodule。
文檔有點少,好在項目還有些活躍
Windows 下安裝麻煩,體驗極差,絕望
把官網的羅列搬出來便可(谷歌翻譯+人工),並且只看命令確實挺有吸引力的
它假定人們與倉庫交互有三個主要角色,並試圖爲他們提供一切服務:
全部者 - 做者/擁有/維護倉庫的人。
用戶 - 剛剛使用/安裝倉庫的用戶。
合做者 - 將代碼提交給倉庫和子倉庫的人員。
該 git-subrepo 命令經過如下方式爲這些角色帶來好處:
簡單而直觀的命令行使用。
用戶只需克隆倉庫就能夠得到倉庫和全部的子倉庫。
用戶不須要安裝 git-subrepo,永遠。
合做者不須要安裝,除非他們想 push/pull。
當一個 subdir 是一個 subrepo(它有一個.gitrepo文件)時,協做者知道。
爲手動操做生成命名分支和遠程控制。
業主不處理保持子模塊同步的複雜性。
Subrepo 存儲庫自己能夠包含 subrepos。
不一樣的分支能夠在不一樣的狀態有不一樣的 subrepos 等。
你能夠 init 將現有的子目錄轉換爲子倉庫。
你的 git 歷史保持清晰。
上游歷史記錄(clone/pull)被壓縮爲一次提交。
你能夠看到 subrepo 歷史經過 git log subrepo/<subdir>/fetch。
推回上游的提交不會被壓縮。
試錯成本低。
無需配置。
不會引入歷史來混淆其餘 git 命令。
修復已知的 git-subtree 使用 rebase 會失敗的問題。
命令表
git subrepo -h # Help Overview
git subrepo clone <remote-url> [<subdir>]
git subrepo init <subdir>
git subrepo pull <subdir>
git subrepo push <subdir>
git subrepo fetch <subdir>
git subrepo branch <subdir>
git subrepo commit <subdir>
git subrepo merge-base <branch1> <branch2>
git subrepo status [<subdir>]
git subrepo clean <subdir>
git subrepo help [<command>]
git subrepo version複製代碼
更多網易技術、產品、運營經驗分享請點擊。
相關文章:
【推薦】 機器學習tensorflow框架初試