- 第一步,安裝git:
sudo apt-get install git
- 第二步嘀趟,創(chuàng)建一個(gè)git用戶,用來運(yùn)行g(shù)it服務(wù):
$ sudo adduser git
- 第三步愈诚,創(chuàng)建證書登錄:
收集所有需要登錄的用戶的公鑰她按,就是他們自己的id_rsa.pub文件,把所有公鑰導(dǎo)入到/home/git/.ssh/authorized_keys文件里炕柔,一行一個(gè)酌泰。
- 第四步,初始化Git倉(cāng)庫(kù):
先選定一個(gè)目錄作為Git倉(cāng)庫(kù)匕累,假定是/home/mygitrsp/first_pro.git陵刹,在/srv目錄下輸入命令:
$ sudo git init --bare first_pro.git
Git就會(huì)創(chuàng)建一個(gè)裸倉(cāng)庫(kù),裸倉(cāng)庫(kù)沒有工作區(qū)欢嘿,因?yàn)榉?wù)器上的Git倉(cāng)庫(kù)純粹是為了共享衰琐,所以不讓用戶直接登錄到服務(wù)器上去改工作區(qū),并且服務(wù)器上的Git倉(cāng)庫(kù)通常都以.git結(jié)尾炼蹦。然后羡宙,把owner改為git:
$ sudo chown -R git:git sample.git
第五步,禁用shell登錄:
出于安全考慮掐隐,第二步創(chuàng)建的git用戶不允許登錄shell狗热,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
第六步瑟枫,克隆遠(yuǎn)程倉(cāng)庫(kù):
現(xiàn)在斗搞,可以通過git clone命令克隆遠(yuǎn)程倉(cāng)庫(kù)了,在各自的電腦上運(yùn)行:
$ git clone git@server:/home/mygitrsp/first_pro.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
如果團(tuán)隊(duì)很小慷妙,把每個(gè)人的公鑰收集起來放到服務(wù)器的
/home/git/.ssh/authorized_keys
文件里就是可行的。如果團(tuán)隊(duì)有幾百號(hào)人允悦,就沒法這么玩了膝擂,這時(shí)虑啤,可以用Gitosis來管理公鑰。
管理權(quán)限
有很多不但視源代碼如生命架馋,而且視員工為竊賊的公司狞山,會(huì)在版本控制系統(tǒng)里設(shè)置一套完善的權(quán)限控制,每個(gè)人是否有讀寫權(quán)限會(huì)精確到每個(gè)分支甚至每個(gè)目錄下叉寂。因?yàn)镚it是為L(zhǎng)inux源代碼托管而開發(fā)的萍启,所以Git也繼承了開源社區(qū)的精神,不支持權(quán)限控制屏鳍。不過勘纯,因?yàn)镚it支持鉤子(hook),所以钓瞭,可以在服務(wù)器端編寫一系列腳本來控制提交等操作驳遵,達(dá)到權(quán)限控制的目的。Gitolite就是這個(gè)工具山涡。
- 配置git hook同步代碼到www 目錄
cd /home/testgit/sample.git
cd hooks
//這里我們創(chuàng)建post-receive文件
vim post-receive
//在該文件里輸入以下內(nèi)容
#!/bin/bash
git --work-tree=/home/www checkout -f
//保存退出后堤结,將該文件用戶及用戶組都設(shè)置成git
chown git:git post-receive
//由于該文件其實(shí)就是一個(gè)shell文件,我們還應(yīng)該為其設(shè)置可執(zhí)行權(quán)限
chmod +x post-receive
改變WWW目錄所屬者
[圖片上傳失敗...(image-87559c-1526454221912)]