Git是用於Linux核心開發的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不同,它採用了分散式版本庫的作法,不需要伺服器端軟體,就可以運作版本控制,使得原始碼的釋出和交流極其方便。Git的速度很快,這對於諸如Linux核心這樣的大專案來說自然很重要。git最為出色的是它的合併追蹤(merge tracing)能力。
構建Git倉庫的方式即可以在本地直接生成,也可以自己搭建一個Git伺服器,本文介紹在Linux伺服器上如何構建一個Git程式碼倉庫。Let's Start!
Git server
- 建立一個git使用者(專門的git使用者用於git連線,限制只能處理程式碼等操作)
$ adduser git
複製程式碼
opt
目錄下建立一個資料夾code
$ mkdir /opt/code
複製程式碼
- 進入資料夾後建立一個git空倉
$ cd code
$ git init --bare test.git
複製程式碼
- 檢視git倉庫目錄結構
$ cd test.git
複製程式碼
- HEAD:指示目前被檢出的分支
- config:包含專案特有的配置選項
- description:僅供 GitWeb 程式使用
- hooks:包含客戶端或服務端的鉤子指令碼(hook scripts)
- info:包含一個全域性性排除(global exclude)檔案,用以放置那些不希望被記錄在 .gitignore 檔案中的忽略模式(ignored patterns)
- objects:儲存所有資料內容
- refs:儲存指向資料(分支)的提交物件的指標
自動部署函式
進入hooks
中建立一個函式(當接收傳送時自動呼叫的鉤子),實現當程式碼更新時服務端執行程式碼同步更新(此步驟僅作自動化部署方案參考,實際執行環境應根據需求後使用)。
$ cd hooks
$ vim post-receive
複製程式碼
內容為重寫指定工作區檔案,程式碼如下
#!/bin/bash
git --work-tree=/www/wwwroot/test checkout -f
複製程式碼
實際情況應將‘/www/wwwroot/test’替換為目標專案位置,此目錄git使用者需有許可權
chown -R git:root /www/wwwroot/test
複製程式碼
最後給post-receive
檔案執行許可權
chmod +x post-receive
複製程式碼
具體鉤子建立與否需根據專案具體實現做不同的調整,某些大廠的程式碼管理是用專門的伺服器進行管理,在網頁控制分支合併釋出,一鍵部署等,抽象出版本管理這層,以便程式碼的釋出,不知道大家都是怎麼實現版本迭代,分支管理的呢?(如果還是手動搬運程式碼就可以試著實現自己的自動化部署啦~)
Git client
- 將儲存庫(將IP替換為倉庫ip地址)克隆到新目錄(可用git BASH客戶端使用),也可直接在伺服器上使用,輸入
git clone /opt/code/test.git
$ git clone git@IP:/opt/code/test.git
複製程式碼
- 進入新建立的目錄中,接著建立測試檔案,程式碼如下
$ cd test
$ touch index.html
複製程式碼
- 上傳到倉庫中,程式碼如下
$ git add .
$ git commit -m 'create index.html'
$ git push
複製程式碼
- 進入之前指定的工作區資料夾檢視程式碼是否提交成功,或通過重複步驟一克隆一份新程式碼,若測試檔案存在則成功。
如發生錯誤,有的可能是因為使用者許可權的原因,通過
chmod
命令配置許可權給git使用者即可
後記
現如今程式碼管理已發展了諸多工具(如svn,cvs),程式碼託管平臺(如Github,Gitlab)可供選擇,要說的話,程式碼如同貨物,適合的版本管理如同高度自動化的船舶,僅需少數船員,即可駕駛著輪船穩健駛向新航線,提高效率,迎接新世紀。
\(•ㅂ•)/♥ 共勉~