Git簡(jiǎn)介
Git是一款免費(fèi)、開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目,無(wú)論是在軟件開(kāi)發(fā)還是個(gè)人領(lǐng)域,Git被廣泛地用來(lái)管理代碼和版本控制。而著名的GitHub是一個(gè)面向開(kāi)源及私有軟件項(xiàng)目的托管平臺(tái),因?yàn)橹恢С謌it作為唯一的版本庫(kù)格式進(jìn)行托管,故名GitHub。
對(duì)于個(gè)人開(kāi)發(fā)者、編程愛(ài)好者或?qū)W生群體來(lái)說(shuō),像GitHub等開(kāi)源托管平臺(tái)固然是存放個(gè)人代碼的首選,但是在某些時(shí)候,可能我們并不希望自己存儲(chǔ)在云端的代碼開(kāi)源(或代碼中包含敏感信息不方便開(kāi)源),雖然GitHub等托管平臺(tái)也提供私有庫(kù)托管服務(wù),但這些服務(wù)一般都需要收費(fèi),能否自己DIY一個(gè)免費(fèi)私人Git倉(cāng)庫(kù)呢?筆者發(fā)現(xiàn)Windows10上的Onedrive就能輕松滿(mǎn)足我們的需求。下面筆者就以Visual Studio 2017為例(其他IDE原理類(lèi)似),構(gòu)建一個(gè)可以進(jìn)行遠(yuǎn)程推送和拉取的私有Git倉(cāng)庫(kù)。
工具準(zhǔn)備
Visual Studio 2013及以上版本
Git for Windows官方下載地址:點(diǎn)擊這里
帶有Onedrive并能正常自動(dòng)同步的Windows 10
具體步驟
首先我們需要在Visual Studio的GitHub插件。打開(kāi)Visual Studio,在【工具】-【擴(kuò)展和更新】-【聯(lián)機(jī)】中窗口右上角搜索框內(nèi)輸入“GitHub”查找“GitHub Extension for Visual Studio”這個(gè)擴(kuò)展插件并下載安裝。
安裝后需要重啟Visual Studio,之后就可以在【已安裝】中看到這個(gè)插件?;蛘?,在Visual Studio 2015和2017版本的安裝程序中,直接勾選這個(gè)插件安裝。
插件安裝后就可以在【視圖】-【團(tuán)隊(duì)資源管理器】中打開(kāi)GitHub管理工具。
現(xiàn)在我們創(chuàng)建一個(gè)演示解決方案,注意勾選“為解決方案創(chuàng)建目錄”和“新建GIT存儲(chǔ)庫(kù)”。
需要注意的是,這里的“新建GIT存儲(chǔ)庫(kù)”是指本地GIT倉(cāng)庫(kù)。并非我們將要把代碼push(推送)出去的遠(yuǎn)程倉(cāng)庫(kù)。
接下來(lái)安裝Git for Windows這個(gè)工具,安裝步驟在我們這里沒(méi)那么多講究,下載后全程下一步就好,在此不再贅述。安裝后就能看到這個(gè)工具
現(xiàn)在我們需要構(gòu)建一個(gè)遠(yuǎn)程倉(cāng)庫(kù),筆者已經(jīng)習(xí)慣Bash了,就用Git Bash來(lái)說(shuō)明。利用OneDrive目錄自動(dòng)同步的特性,我們可以構(gòu)建一個(gè)遠(yuǎn)程倉(cāng)庫(kù)。首先我們?cè)贠neDrive下新建一個(gè)目錄作為遠(yuǎn)程倉(cāng)庫(kù)目錄DemoRepo。
之后運(yùn)行Git Bash,使用cd命令切換工作目錄到剛剛建的DemoRepo下:
$ cd OneDrive/PrivateRepos/DemoRepo
然后使用git init命令將目錄初始化為git倉(cāng)庫(kù):
$ git init
之后使用ls -al命令就會(huì)發(fā)現(xiàn)多了一個(gè).git目錄,說(shuō)明git倉(cāng)庫(kù)初始化完成。
現(xiàn)在這個(gè)倉(cāng)庫(kù)僅僅是最簡(jiǎn)單的倉(cāng)庫(kù)。我們要對(duì)這個(gè)git倉(cāng)庫(kù)做一些配置,才能成為我們想要的“遠(yuǎn)程倉(cāng)庫(kù)”。
使用vim編輯器修改./git下的config配置文件:
$ vim .git/conf
按i進(jìn)入編輯模式,
加上如下字段,然后按【ESC】退出編輯模式,wq!保存并推出:
[receive] DenyCurrentBranch = ignore
如下圖:
TIP:若以上步驟未做,在提交代碼時(shí)會(huì)報(bào)錯(cuò)。
之后我們需要配置自動(dòng)監(jiān)視腳本,事實(shí)上并不需要我們自己寫(xiě)這個(gè)腳本,只需要啟用就可以。使用cd命令進(jìn)入..git/hooks目錄下:
$ cd hooks
現(xiàn)在我們看到了很多后綴為sample的腳本,啟用腳本只需要將文件名后的sample去掉就行。這里我們需要用mv命令重命名post-update.sample文件,如下圖:
$ mv post-update.sample post-update
之后再次使用vim編輯器,編輯post-update腳本,使用#注釋掉exec git update-server-info這行,然后在后面加上下面的代碼保存:
unset GIT_DIR cd .. git checkout -f
TIP:注意cd和..之間有空格。
TIP:若以上步驟未做,可以正常推送代碼到這個(gè)倉(cāng)庫(kù),但在該目錄下無(wú)法看到文件。
現(xiàn)在遠(yuǎn)程倉(cāng)庫(kù)也完成了,我們?cè)囍鴮?xiě)幾行代碼推送出去。在IDE的右下角有一個(gè)箭頭圖標(biāo)和一個(gè)鉛筆圖標(biāo),點(diǎn)擊鉛筆圖標(biāo)即可推送代碼到本地git倉(cāng)庫(kù)。
輸入提交日志后就可以提交代碼了,下面列出了本次更改的文件。
提交成功后會(huì)提示你需要將代碼同步到遠(yuǎn)程倉(cāng)庫(kù),但是我們還沒(méi)有在IDE里指定要推送的遠(yuǎn)程倉(cāng)庫(kù)目錄。
現(xiàn)在回到【團(tuán)隊(duì)資源管理器】的主頁(yè),單擊【設(shè)置】配置遠(yuǎn)程存儲(chǔ)庫(kù)。
選擇【存儲(chǔ)庫(kù)設(shè)置】。
添加遠(yuǎn)程。
這里的遠(yuǎn)程origin名要與之前配置的一致,這里為“origin”,然后將提取和推送的目錄指定為剛才已經(jīng)配置好的遠(yuǎn)程庫(kù)目錄。
完成。
現(xiàn)在點(diǎn)擊右下角的箭頭圖標(biāo),將代碼從本地git庫(kù)推送到遠(yuǎn)程git庫(kù)。
同步完成。
在.git目錄下可以查到之前的推送日志和已經(jīng)同步來(lái)的源文件。
最后我們就可以在另一臺(tái)登錄了自己OneDrive的電腦上將這個(gè)遠(yuǎn)程的倉(cāng)庫(kù)克隆下來(lái)了,操作方法同樣是打開(kāi)【團(tuán)隊(duì)資源管理器】,然后選擇【克隆】,指定源路徑(OneDrive上)和本地路徑,最后點(diǎn)擊【克隆】就行。
總結(jié)
最后總結(jié)一下實(shí)現(xiàn)的思路。我們利用了OneDrive兩個(gè)重要的特性:一是目錄可以自動(dòng)同步——意味著我們只要把git倉(cāng)庫(kù)放到OneDrive同步目錄下,就能自動(dòng)同步到云端;二是OneDrive目錄又可以像本地目錄一樣直接使用cmd、bash等對(duì)其進(jìn)行操作,因此我們又能輕易將其初始化為git倉(cāng)庫(kù)(這點(diǎn)很關(guān)鍵,想象一下,你想把度娘云盤(pán)上的目錄用bash初始化為git倉(cāng)庫(kù),在不開(kāi)通超級(jí)會(huì)員的情況下這是不能實(shí)現(xiàn)的)。我簡(jiǎn)單畫(huà)了個(gè)草圖來(lái)描述這個(gè)過(guò)程:
由于本地OneDrive目錄會(huì)自動(dòng)和云端同步,因此這個(gè)圖等效為直接將本地git庫(kù)同步到了云端,實(shí)現(xiàn)了免費(fèi)的私有g(shù)it倉(cāng)庫(kù)。事實(shí)上,只要OneDrive端遠(yuǎn)程倉(cāng)庫(kù)構(gòu)建好之后,無(wú)論使用何種IDE,都可以實(shí)現(xiàn)整個(gè)過(guò)程。
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。