git子文件夾遷出

之前前后端的多個(gè)項(xiàng)目代碼都放在一個(gè)倉庫姻政,版本管理起來比較混亂,于是現(xiàn)在決定將各個(gè)項(xiàng)目的代碼獨(dú)立出來做單獨(dú)的版本管理厉熟,下面介紹一下本次遷移所用的一些技術(shù)手段

遷出工具介紹

https://github.com/newren/git-filter-repo
安裝方式

我這里使用的方式是斟或,當(dāng)然你也可以使用其他的包管理器

 brew install git-filter-repo

windows系統(tǒng)的可以下載對應(yīng)的python腳本,然后按照安裝文檔的說明進(jìn)行操作痊臭。(windows沒有預(yù)安裝python,先安裝python3版本)

使用git-filter的好處是會(huì)過濾掉不屬于該目錄的提交信息登夫,并且會(huì)自動(dòng)把remote上所有的分支checkout到本地广匙,方便后續(xù)處理。

操作步驟

這里自己操作的時(shí)候參考git文檔恼策,具體步驟已經(jīng)寫的很詳細(xì)了鸦致,我這里就不在贅述了。

由于這次操作了好幾個(gè)倉庫涣楷,每次都這樣來操作難免有些麻煩分唾,可以將上述操作的部分整合為一個(gè)shell腳本

rm -rf [dir]  # dir是原倉庫克隆下來后生成的文件夾名

git clone [originUrl] 

cd [dir]

git filter-repo --path $1 --force

# 如果全局username和email不一致,可以順便把這個(gè)處理一下

git config user.name "username"

git config user.email "useremail"

git remote add origin $2

git config pull.rebase false  # merge 如果想用rebase的方式可以使用其他設(shè)定

git pull origin master --allow-unrelated-histories

我這里命名為command.sh,使用的時(shí)候新建一個(gè)文件夾狮斗,將這個(gè)sh文件放進(jìn)去绽乔,然后根據(jù)自身系統(tǒng)環(huán)境執(zhí)行

zsh command.sh [path] [remoteUrl]

上面的path輸入原先子文件夾的目錄名,remoteUrl則是子文件夾后面對應(yīng)的遠(yuǎn)程倉庫地址

如果有無法執(zhí)行的情況碳褒,加上--force一般就可以了折砸。

后續(xù)處理&可優(yōu)化項(xiàng)

接下來就是選取本地的分支上傳到遠(yuǎn)程,這里推薦使用source tree沙峻,可以很方便的上傳多個(gè)本地分支到遠(yuǎn)程睦授。

然后現(xiàn)在會(huì)有一個(gè)遺留問題,就是會(huì)多嵌套一層原目錄摔寨,其實(shí)也很好理解原因去枷,以前的.git文件在原根目錄下,與子目錄平級(jí)是复,所以我們要做的就是把嵌套的這層目錄去掉删顶,將里面的文件移到根目錄,這里手動(dòng)操作一下即可淑廊。(切換到每個(gè)分支都需要這樣操作一次)

對應(yīng)的shell命令

mv  [dir]/* . && rm -r [dir]

至此逗余,都是一些常規(guī)的git操作,也就不再多提了蒋纬。


可優(yōu)化項(xiàng)的思考

  1. 對于這種多項(xiàng)目和倉庫方式猎荠,一開始前后端放在一起,是為了Jenkins等一些CI工具的方便處理蜀备,如果需要主倉庫來管理多項(xiàng)目的关摇,其實(shí)是可以采用submodule的方式的,既可以將項(xiàng)目做一定的隔離碾阁,主倉庫也能做到管理子模塊詳情可以參考 這里

  2. monorepo的使用输虱,對于多項(xiàng)目要使用同一個(gè)配置項(xiàng)或者方法時(shí)尤其適用,之前開發(fā)的時(shí)候碰到過不同端本質(zhì)上同一份配置文件因?yàn)樽侄蚊Q不一樣導(dǎo)致更新后還要處理各種兼容性問題脂凶,對心智造成很大的負(fù)擔(dān)宪睹,前端可以使用pnpm配合上面說的git submodule一起使用,主倉庫提供公共組件模塊蚕钦,子模塊負(fù)責(zé)各自的業(yè)務(wù)邏輯處理亭病,合理且高效

  3. 工作中使用的一些操作,使用腳本可以提高效率嘶居,但是shell腳本本身的邏輯處理語法比較麻煩罪帖,可以使用node.js這種前端比較熟悉的方式來做一些邏輯判斷和預(yù)設(shè)置,有時(shí)間可以處理一下邮屁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末整袁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子佑吝,更是在濱河造成了極大的恐慌坐昙,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芋忿,死亡現(xiàn)場離奇詭異炸客,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)戈钢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門嚷量,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逆趣,你說我怎么就攤上這事蝶溶。” “怎么了宣渗?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵抖所,是天一觀的道長。 經(jīng)常有香客問我痕囱,道長田轧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任鞍恢,我火速辦了婚禮傻粘,結(jié)果婚禮上每窖,老公的妹妹穿的比我還像新娘。我一直安慰自己弦悉,他們只是感情好窒典,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稽莉,像睡著了一般瀑志。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上污秆,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天劈猪,我揣著相機(jī)與錄音,去河邊找鬼良拼。 笑死战得,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庸推。 我是一名探鬼主播贡避,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼予弧!你這毒婦竟也來了刮吧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掖蛤,失蹤者是張志新(化名)和其女友劉穎杀捻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚓庭,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡致讥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了器赞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垢袱。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖港柜,靈堂內(nèi)的尸體忽然破棺而出请契,到底是詐尸還是另有隱情,我是刑警寧澤夏醉,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布爽锥,位于F島的核電站,受9級(jí)特大地震影響畔柔,放射性物質(zhì)發(fā)生泄漏氯夷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一靶擦、第九天 我趴在偏房一處隱蔽的房頂上張望腮考。 院中可真熱鬧雇毫,春花似錦、人聲如沸踩蔚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寂纪。三九已至席吴,卻和暖如春赌结,著一層夾襖步出監(jiān)牢的瞬間捞蛋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工柬姚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拟杉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓量承,卻偏偏與公主長得像搬设,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子撕捍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

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