當前位置:編程學習大全網 - 源碼下載 - 什麽是git服務器?

什麽是git服務器?

Git是目前世界上最先進的分布式版本控制系統(沒有之壹)。

Git有什麽特點?簡單來說就是:高端大氣上檔次!

那什麽是版本控制系統?

如果妳用Microsoft Word寫過長篇大論,那妳壹定有這樣的經歷:

想刪除壹個段落,又怕將來想恢復找不回來怎麽辦?有辦法,先把當前文件“另存為……”壹個新的Word文件,再接著改,改到壹定程度,再“另存為……”壹個新文件,這樣壹直改下去,過了壹周,妳想找回被刪除的文字,但是已經記不清刪除前保存在哪個文件裏了,只好壹個壹個文件去找,真麻煩。

看著壹堆亂七八糟的文件,想保留最新的壹個,然後把其他的刪掉,又怕哪天會用上,還不敢刪,真郁悶。

更要命的是,有些部分需要妳的財務同事幫助填寫,於是妳把文件Copy到U盤裏給她(也可能通過Email發送壹份給她),然後,妳繼續修改Word文件。壹天後,同事再把Word文件傳給妳,此時,妳必須想想,發給她之後到妳收到她的文件期間,妳作了哪些改動,得把妳的改動和她的部分合並,真困難。

於是妳想,如果有壹個軟件,不但能自動幫我記錄每次文件的改動,還可以讓同事協作編輯,這樣就不用自己管理壹堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動,只需要在軟件裏瞄壹眼就可以,豈不是很方便?

這個軟件用起來就應該像這個樣子,能記錄每次文件的改動:

版本 用戶 說明 日期

1 張三 刪除了軟件服務條款5 7/12 10:38

2 張三 增加了License人數限制 7/12 18:09

3 李四 財務部門調整了合同金額 7/13 9:51

4 張三 延長了免費升級周期 7/14 15:17

這樣,妳就結束了手動管理多個“版本”的史前時代,進入到版本控制的20世紀。

搭建Git服務器

搭建Git服務器需要準備壹臺運行Linux的機器,強烈推薦用Ubuntu或Debian,這樣,通過幾條簡單的apt命令就可以完成安裝。

假設妳已經有sudo權限的用戶賬號,下面,正式開始安裝。

第壹步,安裝git:

$ sudo apt-get install git

第二步,創建壹個git用戶,用來運行git服務:

$ sudo adduser gi

第三步,創建證書登錄:

收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件裏,壹行壹個。

第四步,初始化Git倉庫:

先選定壹個目錄作為Git倉庫,假定是/srv/sample.git,在/srv目錄下輸入命令:

$ sudo git init --bare sample.git

Git就會創建壹個裸倉庫,裸倉庫沒有工作區,因為服務器上的Git倉庫純粹是為了***享,所以不讓用戶直接登錄到服務器上去改工作區,並且服務器上的Git倉庫通常都以.git結尾。然後,把owner改為git:

$ sudo chown -R git:git sample.git

第五步,禁用shell登錄:

出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的壹行:

git:x:1001:1001:,,,:/home/git:/bin/bas

改為:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次壹登錄就自動退出。

第六步,克隆遠程倉庫:

現在,可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:

$ git clone git@server:/srv/sample.git

Cloning into 'sample'...

warning: You appear to have cloned an empty repository.

剩下的推送就簡單了。

管理公鑰

如果團隊很小,把每個人的公鑰收集起來放到服務器的/home/git/.ssh/authorized_keys文件裏就是可行的。如果團隊有幾百號人,就沒法這麽玩了,這時,可以用Gitosis來管理公鑰。

這裏我們不介紹怎麽玩Gitosis了,幾百號人的團隊基本都在500強了,相信找個高水平的Linux管理員問題不大。

管理權限

有很多不但視源代碼如生命,而且視員工為竊賊的公司,會在版本控制系統裏設置壹套完善的權限控制,每個人是否有讀寫權限會精確到每個分支甚至每個目錄下。因為Git是為Linux源代碼托管而開發的,所以Git也繼承了開源社區的精神,不支持權限控制。不過,因為Git支持鉤子(hook),所以,可以在服務器端編寫壹系列腳本來控制提交等操作,達到權限控制的目的。Gitolite就是這個工具。

這裏我們也不介紹Gitolite了,不要把有限的生命浪費到權限鬥爭中。

  • 上一篇:銷售經理分配任務時總是把我們當機器人怎麽辦?
  • 下一篇:怎樣裝扮奧博宿舍啊
  • copyright 2024編程學習大全網