搭建本機git伺服器

2021-08-18 18:47:40 字數 3907 閱讀 4146

遠端倉庫

一節中,我們講了遠端倉庫實際上和本地倉庫沒啥不同,純粹為了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倉庫,假定是/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/bash

改為:

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:

剩下的推送就簡單了。

如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys檔案裡就是可行的。如果團隊有幾百號人,就沒法這麼玩了,這時,可以用gitosis來管理公鑰。

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

在遠端倉庫一節中,我們講了遠端倉庫實際上和本地倉庫沒啥不同,純粹為了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倉庫,假定是/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/bash

改為:

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:

剩下的推送就簡單了。

如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys檔案裡就是可行的。如果團隊有幾百號人,就沒法這麼玩了,這時,可以用gitosis來管理公鑰。

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

有很多不但視源**如生命,而且視員工為竊賊的公司,會在版本控制系統裡設定一套完善的許可權控制,每個人是否有讀寫許可權會精確到每個分支甚至每個目錄下。因為git是為linux源**託管而開發的,所以git也繼承了開源社群的精神,不支援許可權控制。不過,因為git支援鉤子(hook),所以,可以在伺服器端編寫一系列指令碼來控制提交等操作,達到許可權控制的目的。gitolite就是這個工具。

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

Git 搭建git伺服器

環境 ubuntu16.4 1.以root使用者登陸linux後台,執行下面的命令安裝git apt install git2.建立git使用者 adduser git3.建立倉庫目錄 su git mkdir p repository myself.git4.初始化倉庫 cd repository...

Git 搭建Git伺服器

在遠端倉庫一節中,我們講了遠端倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機並交換大家的修改。github就是乙個免費託管開源 的遠端倉庫。但是對於某些視源 如生命的商業公司來說,既不想公開源 又捨不得給github交保護費,那就只能自己搭建一台git伺服器作為私有倉庫使用。搭建git伺服器...

搭建Git伺服器

在 遠端倉庫 一節中,我們講了遠端倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機並交換大家的修改。github就是乙個免費託管開源 的遠端倉庫。但是對於某些視源 如生命的商業公司來說,既不想公開源 又捨不得給github交保護費,那就只能自己搭建一台git伺服器作為私有倉庫使用。搭建git伺...