天翺的(of)技術員作(do)爲(for)一(one)名碼農,平日裏寫好的(of)程序,改好的(of)程序,都有保存項目曆史版本的(of)習慣,同時(hour)還需要(want)在(exist)其他(he)機器取得新文件并編輯再提交。結合上述需求,我(I)想起了(Got it)Git。說起Git代碼托管服務,目前國外有大(big)名鼎鼎的(of)GitHub,國内也有碼雲、coding等平台。雖然這(this)些平台都有較好的(of)體驗,但是(yes)作(do)爲(for)一(one)個(indivual)折騰帝,不(No)知道爲(for)什麽,就是(yes)想要(want)利用(use)自己群晖NAS來(Come)折騰一(one)下,搭建一(one)個(indivual)屬于(At)自己的(of)Git Server服務器,保存的(of)項目也不(No)需要(want)上傳到(arrive)其他(he)網站服務,從某種意義上來(Come)說也能保障私密,所以(by)就有了(Got it)以(by)下的(of)文章内容。
群晖NAS套件中心是(yes)有Git Server套件的(of),隻要(want)在(exist)套件中心安裝即可。但是(yes)需要(want)注意的(of)是(yes):
第一(one)、git 相關的(of)命令需要(want)使用(use) SSH 客戶端連接到(arrive)NAS上進操作(do)。
第二、配置git時(hour)需要(want)使用(use) 管理員權限賬戶,而 push / fetch 使用(use)的(of)賬戶一(one)般都爲(for)普通用(use)戶,一(one)定要(want)注意權限問題。
1 配置NAS
1.1 安裝Git Server套件
1.2 創建用(use)來(Come)存放git倉庫的(of)共享目錄
1.3 創建一(one)個(indivual)用(use)來(Come)使用(use)Git的(of)普通權限賬戶
1.4 設置 Git Server ,并賦予Git_test用(use)戶訪問Git Server的(of)權限。
1.5 打開NAS的(of)家目錄,并允許使用(use)SSH連接
注意:請依次打開NAS控制台→控件面闆→用(use)戶賬号→高級設置→家目錄,啓用(use)家目錄服務。
然後在(exist)依次打開NAS控制台→控制面闆→終端機和(and)SNMP-終端機,啓用(use)SSH功能。
2 通過SSH創建Git倉庫
以(by)下操作(do)過程主要(want)隻利用(use)SSH工具來(Come)鏈接至群晖NAS操作(do),SSH工具以(by)Xshell爲(for)例,同時(hour)需要(want)注意的(of)是(yes)SSH登錄賬戶必須具有管理員權限,以(by)下操作(do)截圖隻保留關鍵步驟。
2.1 使用(use)Xshell登陸NAS 進入Git_test目錄
cd /volume1/Git_test/
2.2 創建倉庫目錄,初始化git倉庫
mkdir test.gitcd test.gitgit init --bare
2.3 設置Git目錄權限,并賦予Git_test用(use)戶訪問權限
#請注意,以(by)下命令建議手打,//後面的(of)内容爲(for)注釋内容,無需輸入
sudo -i // 取得root權限
cd /volume1/Git_test/chown xxx:users . // 将Git_test目錄的(of)所有者改爲(for)管理員賬戶xxx(xxx爲(for)具備管理員權限的(of)賬戶),目錄的(of)所屬群組改爲(for)users。注意不(No)要(want)忘了(Got it)[.]
chmod 770 . // 将Git_test目錄的(of)所有者、所屬群組的(of)權限改爲(for) 讀/寫/運行
chown -R Git_test:users test.git // 改變test.git目錄及所有包含文件、子目錄的(of)所有者
chmod -R 770 test.git // 改變test.git目錄及所有包含文件、子目錄的(of)權限
3 開始使用(use)自己的(of)Git Server服務器
注意:以(by)下操作(do)需要(want)本機安裝有Git程序,沒有安裝的(of)小夥伴可以(by)訪問 https://git-for-windows.github.io/ 下載安裝。
3.1 取得倉庫
安裝完Git程序後,我(I)們(them)隻需要(want)打開CMD命令符窗口并輸入以(by)下命令,即可取得Git倉庫:
git clone ssh://Git_test@192.168.8.243/volume1/Git_test/test.git
▲圖爲(for)獲成功獲取到(arrive)了(Got it)test.git
3.2 add(添加)文件并push到(arrive)倉庫
git add .git commit -m "add test.txt file"git push
▲圖爲(for)成功成功創建文件并push到(arrive)倉庫
在(exist)使用(use)過程中,我(I)們(them)不(No)一(one)定非要(want)用(use)CMD命令行窗口來(Come)操作(do)Git,一(one)般我(I)們(them)使用(use)的(of)IDE開發工具都集成有Git功能,可以(by)很方便進行Git操作(do)。如果需要(want)外網訪問Git Server,我(I)們(them)需要(want)對NAS的(of)SSH端口進行端口映射。