什么是 GitHub
GitHub就是一個免費托管開源代碼的遠(yuǎn)程倉庫色罚。但是對于某些視源代碼如生命的商業(yè)公司來說,既不想公開源代碼,又舍不得給GitHub交保護(hù)費把篓,那就只能自己搭建一臺Git服務(wù)器作為私有倉庫使用肄扎。
前期準(zhǔn)備
- 準(zhǔn)備一臺運行Linux的機(jī)器墨林。
- 假設(shè)你已經(jīng)有sudo權(quán)限的用戶賬號赁酝,下面,正式開始安裝旭等。
開始安裝
第一步酌呆,安裝git:
$ sudo apt-get install git
第二步,創(chuàng)建一個git用戶搔耕,用來運行g(shù)it服務(wù):
$ sudo adduser git
第三步隙袁,創(chuàng)建證書登錄:
- 收集所有需要登錄的用戶的公鑰,就是他們自己的
id_rsa.pub
文件弃榨,把所有公鑰導(dǎo)入到/home/git/.ssh/authorized_keys
文件里菩收,一行一個。
第四步鲸睛,初始化Git倉庫:
- 先選定一個目錄作為Git倉庫娜饵,假定是
/home/git/sample.git
,在/home/git
目錄下輸入命令:
$ sudo git init --bare sample.git
Git就會創(chuàng)建一個裸倉庫官辈,裸倉庫沒有工作區(qū)箱舞,因為服務(wù)器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到服務(wù)器上去改工作區(qū)拳亿,并且服務(wù)器上的Git倉庫通常都以.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
這樣万搔,git用戶可以正常通過ssh使用git胡桨,但無法登錄shell,因為我們?yōu)間it用戶指定的git-shell每次一登錄就自動退出瞬雹。
第六步昧谊,克隆遠(yuǎn)程倉庫:
現(xiàn)在,可以通過git clone命令克隆遠(yuǎn)程倉庫了酗捌,在各自的電腦上運行:
$ git clone git@server:/srv/sample.git
# Cloning into 'sample'...
# warning: You appear to have cloned an empty repository.
剩下的推送就簡單了呢诬。
管理公鑰
- 如果團(tuán)隊很小,把每個人的公鑰收集起來放到服務(wù)器的/home/git/.ssh/authorized_keys文件里就是可行的胖缤。如果團(tuán)隊有幾百號人尚镰,就沒法這么玩了,這時哪廓,可以用
Gitosis
來管理公鑰狗唉。
管理權(quán)限
有很多不但視源代碼如生命,而且視員工為竊賊的公司涡真,會在版本控制系統(tǒng)里設(shè)置一套完善的權(quán)限控制分俯,每個人是否有讀寫權(quán)限會精確到每個分支甚至每個目錄下肾筐。因為Git是為Linux源代碼托管而開發(fā)的,所以Git也繼承了開源社區(qū)的精神缸剪,不支持權(quán)限控制吗铐。不過,因為Git支持鉤子(hook)杏节,所以唬渗,可以在服務(wù)器端編寫一系列腳本來控制提交等操作,達(dá)到權(quán)限控制的目的拢锹。Gitolite就是這個工具谣妻。
這里也不介紹Gitolite了,不要把有限的生命浪費到權(quán)限斗爭中卒稳。