現在的位置: 首頁 > 工具配置 > 正文

搭建Git服務器-遠程倉庫(轉)

2019年04月17日 工具配置 ⁄ 共 1687字 ⁄ 字號 搭建Git服務器-遠程倉庫(轉)已關閉評論

遠程倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機并交換大家的修改。

GitHub就是一個免費托管開源代碼的遠程倉庫。但是對于某些視源代碼如生命的商業公司來說,既不想公開源代碼,又舍不得給GitHub交保護費,那就只能自己搭建一臺Git服務器作為私有倉庫使用。

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

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

第一步,安裝 git

  sudo apt-get install git

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

sudo adduser git

第三步,創建證書登錄:

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

第四步,初始化Git倉庫:

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

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/bash

改為:

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

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

第六步,克隆遠程倉庫:

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

git clone [email protected]:/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了,不要把有限的生命浪費到權限斗爭中。

小結

  • 搭建Git服務器非常簡單,通常10分鐘即可完成;
  • 要方便管理公鑰,用Gitosis
  • 要像SVN那樣變態地控制權限,用Gitolite

轉自 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000

二八杠讨论心得
×