示意圖
我們日常開發工作中避免不了要使用代碼管理工具,其中git是我們熟知的一種,操作它可以使用git bash指令行也可以使用TortoiseGit(小烏龜)等。
這些都是基于我們在本地進行代碼管理,然後跟遠端同步,那假設我們的代碼就在遠端呢?不在本地電腦,或者我們要管理的内容是通過浏覽器傳過來的,不是我們使用本地編輯器建立的,這時候能處理嗎?
概述
要知道git可以管理任何内容,不僅僅是代碼。
比如我們的資料庫内容修改了之後如何檢視修改記錄呢?再比如使用者傳過來的文本或者檔案想要存儲起來,并且可以修改,那如何檢視之前的版本呢?
我們想要把某個接口得到的資料進行版本管理,該如何做到呢?
方法肯定有很多種,今天我們來看看使用isomorphic-git能做些什麼吧。
我們來分為三個部分進行講述,每一部分都對應了不同的可操作内容。
要實作上述所說需求,涉及到了後端的内容,所有功能全部由頁面中調用接口實作。
而且通過這種方式,要管理的代碼所在的電腦或者伺服器上面不需要安裝git等,直接本身就可以實作這些功能。
一、本地git檔案管理
示意圖
此處的本地不是指本機電腦磁盤,而是指存放git檔案的地方,将放在遠端伺服器等處。這裡是相對于github、gitee等而言的。
- 初始化git項目檔案
通過git.init方法來初始化一個git目錄,用來作為你的工作目錄進行版本控制。可以指定預設分支,預設為master:
const dir = join(process.cwd(), config.gitFolder)
await git.init({
fs,
dir,
defaultBranch: bd.localBranch
})
這裡的gitFolder是我設定的預設路徑,指定了存放在目前項目下的public/pageRecord檔案夾中。
點選該按鈕,我們看下效果:
示意圖
已經生成了.git檔案夾。
- 同步資料庫到本地檔案
這個是我自己寫的将資料庫中的資料同步到public/pageRecord檔案夾中,并根據不同的資料記錄生成不同的檔案夾以及檔案,看下效果。
示意圖
示意圖
已經将資料庫的檔案同步到指定檔案夾下面了。
- 将修改檔案添加到待送出區
通過git.add将剛生成的檔案添加到暫存區,這就相當于我們的git add。看下效果:
示意圖
這個時候檔案就已經添加到git的暫存區了。
- 将待送出區檔案進行送出
通過git.commit來送出剛才的檔案,這個就相當于git commit,我們送出一次看看:
示意圖
由于我們是第一次送出,并且沒有設定賬戶資訊,是以需要我們填寫一下,再看下工作目錄:
示意圖
這個時候已經将暫存區的檔案送出到了分支上面。
好了,伺服器上面的git工作目錄已經完事了,以github為例,我們繼續看下遠端git的管理。
二、遠端檔案管理
示意圖
- 配置遠端git倉庫位址
這裡我在自己的倉庫上建立一個測試倉庫,看看它們是怎麼運作的。
示意圖
這樣我們在github上就建立了一個test-project的倉庫。
回到我們的頁面,點選該按鈕:
示意圖
通過git.addRemote就可以添加該位址,現在我們已經設定好了遠端倉庫的位址。
- 拉取遠端檔案到本地
這裡由于我們建立了一個空倉庫,并且本地已經生成了git工作目錄,是以我們隻看第3個功能。
如果github上面已經有一個現成的項目倉庫,而本地是空的工作目錄,那麼可以利用這個功能(git.pull)将github上面的倉庫拉取到本地。
- 推送本地檔案到遠端
使用git.push來完成此操作,相當于git push
示意圖
當我們推送的時候需要輸入驗證資訊,點選确認按鈕,看看發生了什麼:
示意圖
已經将本地的檔案上傳到了github上面。
- 設定其他git配置項
主要是用git.setConfig來設定一些額外的配置項,友善我們後續的操作:
示意圖
比如我們這裡設定賬戶名稱和郵箱,那麼它就會同步在配置檔案裡面:
示意圖
這裡隻是舉個例子,實際中我們應該使用真實的資訊。
三、git日志與配置
示意圖
- 送出日志
通過git.log來完成此操作,點選該按鈕:
示意圖
可以輸入一些查詢的資訊選項,也可以直接點選确認,來預設查詢:
示意圖
能夠看到,我們剛才的送出記錄被展示出來了,點選檢視圖示,可以檢視本次的送出内容:
示意圖
頂部是我們的送出說明,下面是添加的所有檔案資訊。
點選對應的檔案,可以檢視詳細内容:
示意圖
展示出了該檔案從無到有的添加過程與内容。
我們現在試着來修改其中一個檔案,并添加到暫存區,然後送出到分支,但是不進行推送。
利用上面我們做出的功能來操作一下,看看這回的日志:
示意圖
已經出現啦!
示意圖
相應的内容變成了修改。
示意圖
也能看到修改的詳細資訊。
- 檔案日志
主要通過git.walk和git.tree來配合完成該功能。
點選該按鈕,我們能看到目前git工作目錄下的全部檔案:
示意圖
點進對應的目錄,一直找到我們剛才修改的檔案:
示意圖
檢視日志可以看到該檔案被修改的日志記錄:
示意圖
一共被修改了兩次,在這裡同樣可以通過檢視圖示繼續檢視詳細資訊。
- 檔案狀态
這裡是通過git.statusMatrix來實作檔案狀态的檢視。
示意圖
可以看到,我們剛才送出之後再未做過任何修改。
現在讓我們來修改一下,看看它們的幾種狀态:
示意圖
可以看到,有修改的、删除的、新增的。這裡全部都列了出來。
- 基本配置
這裡可以檢視我們給git設定的配置項,簡單來查詢一下:
示意圖
這樣就可以看到我們剛才設定的配置資訊。
最後
我們通過isomorphic-git實作了從資料庫到伺服器到github的資料版本控制。并具備了初始化、添加、送出、同步、推送、拉取、資訊配置、送出日志檢視、檔案日志檢視、檔案狀态檢視、配置資訊檢視等功能。
其實isomorphic-git還具有很多其他的能力,可以自己嘗試實作一下,這裡就不示範了。
總結
使用isomorphic-git能夠滿足我們開發工作的一部分場景,解決我們需要對一些持久化資料做版本控制的需求,但是需要後端的支援,比如這裡我自己寫了後端的接口,通過在前端頁面中進行友好的互動,來控制想要做的操作。同樣它也提供了純前端的引入,可以通過CDN等方式來實作,然後通過在浏覽器的本地存儲中實作各種操作。
需要體驗可以通路:
// 項目內建isomorphic-git,操作工作目錄,作版本控制
// http://lnsstyp.com/manage
有興趣的小夥伴可以嘗試一下,也可以自己做一做,希望能夠幫助到你。