-
A1. 附錄 A: Git 在其他環境
- A1.1 圖形介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 小結
-
A2. 附錄 B: 在應用程式中嵌入 Git
-
A3. 附錄 C: Git 命令
4.5 伺服器上的 Git - Git 守護程序
Git 守護程序
接下來,我們將設定一個守護程序,使用“Git”協議提供倉庫服務。這是對 Git 資料進行快速、無需認證訪問的常見選擇。請記住,由於這不是一個認證服務,透過此協議提供的任何內容在其網路內都是公開的。
如果你在防火牆外的伺服器上執行此服務,它應僅用於對全世界公開可見的專案。如果你執行此服務的伺服器在防火牆內,你可能會將其用於需要大量人員或計算機(持續整合或構建伺服器)只讀訪問的專案,而你又不想為每個使用者新增 SSH 金鑰。
無論如何,Git 協議都相對容易設定。基本上,你需要以守護程序的方式執行此命令
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
--reuseaddr
選項允許伺服器重啟而無需等待舊連線超時,而 --base-path
選項允許使用者在不指定完整路徑的情況下克隆專案,末尾的路徑則告訴 Git 守護程序在哪裡查詢要匯出的倉庫。如果你正在執行防火牆,還需要在設定此服務的機器上的 9418 埠打一個孔。
你可以透過多種方式將此程序守護化,具體取決於你執行的作業系統。
由於 systemd
是現代 Linux 發行版中最常見的 init 系統,你可以用它來達到這個目的。只需將一個檔案放置在 /etc/systemd/system/git-daemon.service
中,幷包含以下內容:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
你可能已經注意到,Git 守護程序在這裡是以 git
作為組和使用者啟動的。請根據你的需要進行修改,並確保提供的使用者在系統上存在。此外,檢查 Git 二進位制檔案是否確實位於 /usr/bin/git
,如有必要請更改路徑。
最後,你將執行 systemctl enable git-daemon
以在啟動時自動啟動服務,並可以使用 systemctl start git-daemon
和 systemctl stop git-daemon
分別啟動和停止服務。
在其他系統上,你可能希望使用 xinetd
、sysvinit
系統中的指令碼或其他方式——只要你能以某種方式將該命令守護化並進行監控。
接下來,你需要告訴 Git 哪些倉庫允許進行未經認證的 Git 伺服器訪問。你可以在每個倉庫中建立一個名為 git-daemon-export-ok
的檔案來完成此操作。
$ cd /path/to/project.git
$ touch git-daemon-export-ok
該檔案的存在告訴 Git,可以未經認證地提供此專案服務。