所有相干細(xì)節(jié)都可以從該文檔出獲得:
http://git.oschina.net/progit/4-%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git.html#
Git其實(shí)不存在Server端和Clint端之分,在Git Server上安裝的也還是Git。最簡單的安裝方式是直接用系統(tǒng)提供的包管理工具。例如CentOS/RHEL,可使用:
Git支持4種主要的協(xié)議來傳輸數(shù)據(jù):本地傳輸,SSH 協(xié)議,Git 協(xié)議和 HTTP 協(xié)議, 我們來簡單快速地過1下這4種協(xié)議。
對(duì)本地協(xié)議來說幾近只有1種可能的利用場景:即團(tuán)隊(duì)使用的是同享的文件系統(tǒng)(例如 NFS),團(tuán)隊(duì)中的每個(gè)成員都能向訪問本地文件系統(tǒng)1樣訪問它。
SSH是Git最經(jīng)常使用傳輸協(xié)議,這是應(yīng)為SSH本身已非常成熟且通用的訪問協(xié)議了,Git基于SSH是非常聰明的選擇。另外SSH是4種協(xié)議中唯逐一個(gè)同時(shí)支持讀寫操作的網(wǎng)絡(luò)協(xié)議。
1個(gè)典型的SSH協(xié)議的repo是這樣的:
Git 協(xié)議是現(xiàn)存最快的傳輸協(xié)議。如果你在提供1個(gè)有很大訪問量的公共項(xiàng)目,或1個(gè)不需要對(duì)讀操作進(jìn)行授權(quán)的龐大項(xiàng)目,架設(shè)1個(gè) Git 守護(hù)進(jìn)程來供應(yīng)倉庫是個(gè)不錯(cuò)的選擇。它使用與 SSH 協(xié)議相同的數(shù)據(jù)傳輸機(jī)制,但省去了加密和授權(quán)的開消。
HTTP 協(xié)議的好處是易于架設(shè)。幾條必要的命令就能夠讓全球讀取到倉庫的內(nèi)容。
簡單總結(jié)1下: 如果是公司的項(xiàng)目,SSH多是你們團(tuán)隊(duì)唯1需要使用的協(xié)議。如果是開源項(xiàng)目或是允許對(duì)項(xiàng)目進(jìn)行匿名只讀訪問,那末除SSH 協(xié)議以外,還需要支持Git或Http/s協(xié)議以便他人訪問讀取。
實(shí)際上Git并沒有特別的配置,只是如果我們使用SSH協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)脑捨覀冃枰獎(jiǎng)?chuàng)建專職的登陸賬號(hào)和登入密鑰,因此所謂的“配置”實(shí)際上是SSH相干的配置。
創(chuàng)建Git用戶和用戶組
命令本省非常簡單, 這里要解釋的是為何我們要?jiǎng)?chuàng)建這個(gè)git用戶,這個(gè)用戶不是為了運(yùn)行Git而創(chuàng)建的專職用戶,而僅僅是為了SSH訪問而創(chuàng)建的。正如我們?cè)谇懊妗癝SH協(xié)議”1節(jié)中提到的地址格式:
這里的“user@gitserver”實(shí)質(zhì)上就是SSH在登入時(shí)提供的用戶和遠(yuǎn)程主機(jī)的命令行格式,所以說,既然我們需要使用SSH的方式登入并進(jìn)行數(shù)據(jù)讀寫,總歸是要有1個(gè)登入賬戶吧?OK,那就創(chuàng)建1個(gè)叫g(shù)it專用賬戶來專門支持git的數(shù)據(jù)傳輸吧。
另外,我們把git用戶的home目錄設(shè)定為了/var/git, 用以區(qū)分1般的登入賬戶。而這個(gè)/var/git下,是放置所有repository的理想位置。
一樣的,并沒有甚么真實(shí)的git client端配置,還是SSH登陸的問題,不過就是為本地用后創(chuàng)建SSH密鑰對(duì),并把公鑰拷貝到Server端git用戶的~/.ssh/authorized_keys中,簡單講就是:只要本地能通過密鑰登入git@gitserver就算是完成了客戶真?zhèn)€配置。
關(guān)于配置SSH密鑰登入,本文不再贅述。只是結(jié)合這里的場景重復(fù)1個(gè)角色:客戶端要訪問Git Server則應(yīng)由客戶端生成密鑰,私鑰客戶端保存,公鑰拷貝至Git Server的Git用戶的authorized_keys文件中。
配置完成以后,我們就能夠在Server端創(chuàng)建(初始化)Repository了。假定的我們要?jiǎng)?chuàng)建的項(xiàng)目就叫“project”,我們?cè)趹?yīng)當(dāng)在Server端履行以下命令: