Ⅰ 利用gitrepo無縫遷移git項目
正所謂天下大事合久必分,分久必合。實際工作中的項目也類似,有的項目越來越大,或者有時候需要把沒有前後端分離的項目代碼拆分到兩個倉庫里,就涉及到對已有git項目的遷移操作。
如果只是簡單地把代碼拆開並不難,可以選擇直接下載git項目源代碼壓縮包,拆分後push到新建的git倉庫里就可以了。
但是現實世界往往沒有那麼簡單,比如正在進行的開發分支還沒有合並,或者我們想保留提交記錄和分支關系。如此種種原因導致無法簡單粗暴地把源代碼扔到一個新建的git倉庫里,還涉及對git記錄進行必要的裁剪。
本文就介紹一個好用的工具來進行無損的git倉庫遷移。
在實際工作中,我們有一個項目,其項目目錄結構很簡單,是一個既含有前端代碼,也含有服務端代碼的倉庫,如下所示:
我們希望將前端和服務端代碼拆分成兩個獨立的git倉庫,但是因為開發同學還有正在開發的功能分支沒有合並,因此我們希望能夠同時遷移代碼和git提交 歷史 以及分支。最終希望得到的結果是:
git repo A: ./server/
git repo B: ./webapp/
通過查看git文檔,首先考慮使用git filter-branch命令來進行遷移。簡單來說該命令可以用來操作目錄樹,同時修改 歷史 提交記錄。
在我還沒來得及完全理解這個命令之前,就看到文檔中有這樣一段warning
這里提到了filter-branch命令由於有可能產生雜亂的提交 歷史 ,以及慘不忍睹的執行效率,所以最終推薦了一個第三方工具git filter-repo。接下來,就該今天的主角登場了。
在github首頁上,關於git-filter-repo有這樣的描述
接下來我們考慮如何利用這個強大的工具來進行git項目的遷移。
首先,需要定義成功遷移的標准:
查看git-filter-repo的文檔可以看到有不少簡單的示例,很幸運有一些例子正好可以解決我們的問題。
git-filter-repo的命令選項 (flag) 主要用來操作目錄樹,根據操作的目錄樹自動判斷需要修改的git提交 歷史 信息。
比如我們需要保留webapp目錄,刪除server目錄,那麼僅需執行:
這樣倉庫中的目錄結構就會變為:
可以看到,已經沒有server文件夾了。
再比如如果我們希望刪除.DS_Store文件以及其提交 歷史 :
當然通常我們需要刪除根目錄下所有.DS_Store文件及其 歷史 ,那麼可以加上--use-base-name選項,表示匹配文件名,而不是匹配完整路徑:
其中 --path 選項後跟需要操作的路徑或者文件名,--invert-paths選項字面意思是反向,因此該標記表示的是刪除操作。
以上都是刪除某些文件或者保留某些文件的操作,其目錄結構仍然會保留原始倉庫的結構,但我們需要的是僅保留webapp目錄下的所有文件,並將其中的內容移動到根目錄下。針對這種場景git-filter-repo提供了一個叫做--subdirectory-filter的選項,接下來就進行實際操作。
接下來再看一下老的倉庫目錄結構
僅保留webapp目錄下的內容,並讓其成為新的根目錄,執行如下命令:
執行結果的目錄結構如下所示:
至此,目錄結構已經如願完成,為了確認遷移的 歷史 記錄也是完整的,執行
如果確認本地倉庫的遷移結果正確,再執行命令將當前本地倉庫推向遷移的目的倉庫即可:
至此我們的git項目遷移就完成了,不僅將代碼遷移到新的倉庫,也同時將提交 歷史 帶去了新的倉庫。這樣一來,對於開發同學來說遷移完全是無痛的,只是切換了新的git地址,而開發過程完全不會中斷。
在git項目需要遷移的場景中,日常工作中也許第一反應就是讓開發同學們放下手中的工作,全部推向一個指定用於遷移的分支,然後以這個分支為准,下載源代碼,再將其推送到新的倉庫中。
這種操作方式雖然簡單,但是對於開發同學來說,卻會造成很多麻煩。
比如新倉庫的代碼不僅含有自己未開發完成的代碼,也含有其他人未完成的代碼,很有可能在遷移完成之後項目都跑不起來。
而除此以外,如果新倉庫的代碼有一個需要很快就上線的功能,或者緊急修復,面對一個百廢待興的新倉庫,如何整理出一個可以上線的代碼版本,又是一件非常頭大的事情。
git-filter-branch可以幫助我們修改目錄樹和提交 歷史 ,但是執行效率和混亂的提交 歷史 顯得太過於繁瑣。
git-filter-repo工具提供了強大的工具集,良好的用戶使用界面,以及高效率的處理機制,在目前確實是處理倉庫遷移的最優選擇。
本文僅僅是講解了git-filter-repo的一種應用場景,其官方文檔上有更多的使用場景,可以根據更多的條件來過濾和操作文件和提交 歷史 。
Ⅱ web前端常用的資料庫有哪些
1、MySQL
2、Mongodb
3、SQL Server
4、Oracle
Ⅲ 前端如何將項目放到gitHub倉庫的方法
1.准備好已經處理過的項目
Ⅳ 前端開發用什麼資料庫
資料庫一般是後端開發負責,很多公司前端現在也在負責資料庫等和後端結合,向全棧開發方向發展。
MongoDB
MongoDB 是一個基於分布式文件存儲的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。MongoDB 是一個介於關系資料庫和非關系資料庫之間的產品,是非關系資料庫當中功能最豐富,最像關系資料庫的。相比較於MySql,它省去了建表等繁瑣的操作,可以實現類似於js的對象操作。
MySQL
MySQL的開放式的架構使得用戶選擇性很強,同時社區開發與維護人數眾多,其功能比較穩定,性能卓越,且在遵守GPL協議的前提下,可以免費使用與修改,也為MySQL的推廣與使用帶來了更多利好。在MySQL成長與發展過程中,支持的功能逐漸增多,性能也不斷提高,對平台支持也越來越多。
MySQL是一種關系型資料庫管理系統關系型資料庫的特點是將數據保存在不同的表中,在將這些表放入不同的資料庫中,而不是將所有數據統一放在一個大倉庫里,這樣的設計增加了MySQL的讀取速度,靈活性可管理性也得到了很大提高。訪問以及管理MySQL資料庫的最常用標准化語言為SQL結構化查詢語言。
絕大多數的使用Linux操作系統的大中小互聯網網站都在使用MySQL作為其後端的資料庫存儲,從大型BAT門戶,到電商平台,分類門戶等無一例外都使用MySQL資料庫。那麼,MySQL資料庫到底那些優勢和特點,讓大家義無反顧的選擇它呢?
原因可能有以下幾點:
1.MySQL性能卓越,服務穩定,很少出現異常宕機2.MySQL開放源代碼且無版權制約,自主性及使用成本低3.MySQL歷史悠久,社區及用戶非常活躍,遇到問題,可以尋求幫助4.MySQL軟體體積小,安裝使用簡單,並且易於維護,安裝及維護成本低5.MySQL品牌口碑較應,使得企業無需考慮就直接用之,LAMP,LEMP流行架構。6.MySQL支持多種操作語言,提供多種API介面,支持多種開發語言,特別對流行的PHP語言有很好的支持。
Ⅳ 前端倉庫是什麼
前端倉庫 就是一個倉庫,能幫助前端開發人員節省時間的倉庫!
初級前端與高級前端之間,很大原因就是投入學習前端的時間、經驗的差別,其實就是信息差。
如果有一個地方能又快又好的獲得這些優質的前端信息,那麼將會大大縮短從初級到高級的時間。