如何搭建Git服務器


  本文將介紹如何在Linux系統上搭建Git服務器以及查看Git提交記錄。

搭建Git服務器

  首先,我們需要一台Linux服務器,作為Git服務部署的機器,一般選用Ubuntu或者Debian,請確保擁有sudo權限並且聯網。筆者以Mac電腦上的虛擬機為例,系統為Ubuntu 16.04。
  我們先安裝Git,命令如下:

$ sudo apt-get install git

  然后,創建一個git用戶,用來運行git服務:

$ sudo adduser git

  接着,創建證書登錄。收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。注意,有可能在/home/git中沒有.ssh文件夾,可以自行創建.ssh文件夾和authorized_keys文件,如果遇到權限問題,直接用sudo操作即可。筆者將自己Mac電腦的公鑰放在虛擬機的Ubuntu系統中的
/home/git/.ssh/authorized_keys文件里。
  然后,我們創建一個示例的Git倉庫(空倉庫),假定是/srv/sample.git,在/srv目錄下輸入命令:

$ sudo git init --bare sample.git

並把然后,把owner改為git

$ sudo chown -R git:git sample.git

創建過程如下圖:
創建空倉庫
  最后,我們禁止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服務器搭建的過程,同時我們在Git服務器上創建了一個新的空倉庫sample.git

Git服務器使用

  首先確保客戶機(筆者自己的Mac電腦)能訪問搭建Git服務器的Linux機器(本文中是虛擬機Ubuntu系統)。筆者的虛擬機IP為192.168.0.106,在客戶機上(筆者自己的Mac電腦)利用下面的git clone命令下載sample.git項目。

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

  我們利用PyCharm進行兩次提交,第一次提交README.md文件,文檔內容為"Hello from Git Server!",第二次在此基礎上新增test.txt文件,文檔內容為"2020-05-18 10:25:00"。至於如何用PyCharm提交,可以參考文章:利用PyCharm操作Github:倉庫新建、更新,代碼回滾 。截圖如下:
第一次提交
第二次提交
  這時候我們再進入虛擬機(Git服務器)中去查看/srv/sample.git,內容如下:
/srv/sample.git
  可以用git log命令查看當前分支的提交記錄,如下圖:
提交記錄
可以看到,我們在客戶機上提交了兩次以及每次的Commit Message。切換到某次具體的提交,可以用git show命令查看提交的內容,如下圖:
顯示某次提交的具體內容
當然還有很多高級的操作,這里不再介紹。
  如果我們想要在網頁中像Gitlab那樣可視化地查看提交記錄,可以借助git instaweb命令,該命令默認配置的WEB服務器軟件為lighttpd,如果Git服務器上沒有安裝,可以使用下面的命令安裝:

$ sudo apt-get install lighttpd

接着我們切換至/srv/sample.git,使用下面的命令啟動git的WEB查看服務:

$ sudo git instaweb --httpd=lighttpd

在Firefox中輸入網址:http://127.0.0.1:1234,即可見到頁面如下:


  在這個網址中,我們可以像Gitlab一樣方便地查看samplt.git的提交記錄,雖然功能不如Gitlab強大。

總結

  如果團隊很小,把每個人的公鑰收集起來放到服務器的/home/git/.ssh/authorized_keys文件里就是可行的。如果團隊有幾百號人,就沒法這么玩了,這時,可以用Gitosis來管理公鑰。另外,如果想在離線環境下也使用Git來管理代碼,上述方法也是可行的。

參考文獻

  1. 搭建Git服務器:https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664
  2. git instaweb命令:https://git-scm.com/docs/git-instaweb


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM