如何把GIT倉庫中的子目錄submodule化

目的:

隨著倉庫使用的越來越久琴拧,倉庫中的子目錄越來越多蝌借,倉庫也變得越來越大。會導(dǎo)致pull和push的時(shí)間變長吟吝,共享代碼就會變得很痛苦菱父。

可以用將子目錄獨(dú)立成一個(gè)submodule的方式,保留分支和提交歷史剑逃。

步驟:

1. Clone倉庫到本地目錄

$ git clone http://gitlab.xxx/xxx.git

倉庫結(jié)構(gòu):

myrepo

?--test1

--src

--...

我想要把test1這個(gè)子目錄submodule化

2. 選擇要保留的分支

通常剛clone下來的倉庫本地只會有一個(gè)branch:master浙宜,如果我們希望在馬上要做的子模塊中保存其他的分支,那就首先把它們創(chuàng)建出來:

$ git checkout release

$ git checkout fix

3. 刪除remote信息

$ git remote rm origin

4. 轉(zhuǎn)化成submodule

這是最重要的一步

$ git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter test1 -- --all

該命令過濾所有歷史提交蛹磺,保留對test1子目錄有影響的提交粟瞬,并且把子目錄設(shè)為該倉庫的根目錄。下面解釋下各參數(shù)意思:

--tag-name-filter cat 該參數(shù)控制我們要如何保存舊的tag萤捆,參數(shù)值為bash命令裙品,cat表示原樣輸出俗批。所以,如果你不關(guān)心tag市怎,就不需要這個(gè)參數(shù)了岁忘;

--prune-empty 刪除空的(對子目錄沒有影響的)的提交

--subdirectory-filter test1指定子模塊路徑

-- --all 該參數(shù)必須跟在--后面,表示對所有分支做操作区匠,即對上一步創(chuàng)建的所有本地分支做操作臭觉。所以,如果你只想保存當(dāng)前分支辱志,就不需要這個(gè)參數(shù)了

該命令執(zhí)行完畢后蝠筑,查看當(dāng)前目錄結(jié)構(gòu)就會發(fā)現(xiàn)里面已經(jīng)是子目錄的內(nèi)容了。git log查看提交歷史已經(jīng)正常保存了揩懒。

清理:

上面的步驟完成后什乙,當(dāng)前倉庫里還保存了很多不需要的object, 需要做下清理,才能減少當(dāng)前倉庫的體積已球。

$ git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

$ git reflog expire --expire=now --all

$?git gc --aggressive --prune=now

提交:

1. 首先要在gitlab上創(chuàng)建test1的倉庫

2. 對應(yīng)remote

$ git remote add origin http://xxxx/test1.git

3. 提交

$ git push -u origin --all

$ git push -u origin --tags

添加submodule

1. 再clone一份原來的倉庫

2. 刪除子目錄test1

3. 把test1以submodule的方式添加

$ git submodule add -b master http://gitlabxxxx/test1.git test1

4. 提交修改

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末臣镣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子智亮,更是在濱河造成了極大的恐慌忆某,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阔蛉,死亡現(xiàn)場離奇詭異弃舒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)状原,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門聋呢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颠区,你說我怎么就攤上這事削锰。” “怎么了毕莱?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵器贩,是天一觀的道長。 經(jīng)常有香客問我朋截,道長蛹稍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任质和,我火速辦了婚禮稳摄,結(jié)果婚禮上稚字,老公的妹妹穿的比我還像新娘饲宿。我一直安慰自己厦酬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布瘫想。 她就那樣靜靜地躺著仗阅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪国夜。 梳的紋絲不亂的頭發(fā)上减噪,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音车吹,去河邊找鬼筹裕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窄驹,可吹牛的內(nèi)容都是我干的朝卒。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼乐埠,長吁一口氣:“原來是場噩夢啊……” “哼抗斤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丈咐,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瑞眼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后棵逊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伤疙,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年辆影,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掩浙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秸歧,死狀恐怖厨姚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情键菱,我是刑警寧澤谬墙,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站经备,受9級特大地震影響拭抬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侵蒙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一造虎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纷闺,春花似錦算凿、人聲如沸份蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婚夫。三九已至,卻和暖如春署鸡,著一層夾襖步出監(jiān)牢的瞬間案糙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工靴庆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留时捌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓炉抒,卻偏偏與公主長得像匣椰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子端礼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1禽笑,查看所有遠(yuǎn)程分支:%git branch -r 2, 拉取遠(yuǎn)程分支并創(chuàng)建本地分支git checkout -...
    will666閱讀 2,055評論 0 18
  • git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git commit 提交 git b...
    猿萬閱讀 5,029評論 1 45
  • 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git c...
    LOVE_晴天閱讀 2,320評論 0 10
  • 本片內(nèi)容轉(zhuǎn)自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃兒閱讀 4,916評論 2 88
  • 松果體是一種能將肉眼看不見的能量,轉(zhuǎn)化成看得見的能量的分泌腺凡桥,我們將沉睡著的松果體喚醒蟀伸,于是我們就和宇宙連接在了一...
    晨灃閱讀 1,566評論 0 1