在Windows环境下搭建Git服务器是企业或个人团队进行版本控制管理的常见需求,尤其对于习惯Windows操作系统的用户而言,本地化部署能更好地整合现有工作流,以下是详细的搭建步骤、配置要点及注意事项,帮助用户快速完成Windows Git服务器的搭建与使用。

环境准备与依赖安装
搭建Windows Git服务器前,需确保系统满足基本条件,并安装必要的软件。
- 操作系统要求:推荐Windows 10/11专业版或Windows Server 2025及以上版本,确保支持SSH服务(若使用SSH协议)或IIS(若使用HTTP协议)。
- 安装Git:从Git官方官网下载最新版安装包,安装时选择默认配置即可,确保将Git添加到系统环境变量PATH中,安装后可通过命令行输入
git --version验证是否成功。 - 安装SSH服务(可选):若通过SSH协议传输数据,需启用Windows的OpenSSH服务器,在“设置”-“应用”-“可选功能”中添加“OpenSSH服务器”,或通过PowerShell执行
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0安装。 - 创建Git专用用户:为提高安全性,建议创建一个独立的系统用户(如
gituser)用于管理Git仓库,避免使用管理员账户,右键“此电脑”-“管理”-“本地用户和组”-“用户”,创建新用户并设置复杂密码。
创建Git仓库并配置权限
- 初始化仓库:在服务器上选择一个磁盘路径(如
D:\GitRepositories)作为仓库存储目录,右键选择“Git Bash Here”打开终端,执行以下命令初始化空仓库:mkdir project.git && cd project.git git init --bare
--bare参数表示创建“裸仓库”,仅包含版本历史记录,不支持直接工作,适合作为中央服务器使用。 - 设置仓库所有者:将仓库目录的所有权分配给
gituser,避免权限问题,在仓库目录右键“属性”-“安全”-“编辑”,添加gituser用户并赋予“完全控制”权限。 - 配置多仓库管理:若需管理多个项目,重复上述步骤创建不同名称的裸仓库(如
project1.git、project2.git),统一存放在GitRepositories目录下,便于维护。
配置SSH或HTTP协议访问
根据团队需求选择协议,SSH协议更安全且支持免密登录,HTTP协议则便于通过Web浏览器访问。
(一)SSH协议配置
- 生成SSH密钥对:客户端用户需生成SSH公钥和私钥,在客户端Git Bash中执行:
ssh-keygen -t rsa -C "your_email@example.com"
按提示保存密钥(默认在
~/.ssh/目录),公钥文件为id_rsa.pub。
(图片来源网络,侵删) - 上传公钥到服务器:将客户端的
id_rsa.pub内容追加到服务器gituser的authorized_keys文件中,在服务器Git Bash中执行:mkdir -p /home/gituser/.ssh && touch /home/gituser/.ssh/authorized_keys cat /path/to/client/id_rsa.pub >> /home/gituser/.ssh/authorized_keys
注意:
authorized_keys文件权限需设置为600,目录权限设置为700,可通过chmod命令调整。 - 测试连接:客户端执行
ssh gituser@服务器IP,若无需密码即登录成功,说明SSH配置正确。
(二)HTTP协议配置(需IIS支持)
- 安装IIS和Git HTTP模块:通过“服务器管理器”添加“IIS”角色,并安装“URL Rewrite模块”和“Git HTTP请求处理模块”(需从Git官网下载)。
- 创建网站:在IIS中新建网站,指向
GitRepositories目录,并配置“目录浏览”和“脚本执行”权限。 - 配置Web.config:在网站根目录创建
web.config文件,添加以下内容以支持Git over HTTP:<configuration> <system.webServer> <handlers> <add name="GitHTTP" verb="*" path="*" modules="GitHttpModule" resourceType="Unspecified" requireAccess="Script" /> </handlers> </system.webServer> </configuration> - 设置身份验证:在IIS中启用“基本身份验证”,并添加
gituser用户的凭据,客户端克隆时需输入用户名和密码。
常见问题与优化建议
- 权限问题:确保仓库目录和
.ssh目录权限正确,避免因权限不足导致客户端无法推送代码。 - 防火墙配置:在Windows防火墙中开放SSH默认端口22(若使用SSH协议)或HTTP端口80/HTTPS端口443(若使用HTTP协议),可通过
netsh advfirewall firewall add rule name="SSH" dir=in action=allow protocol=TCP localport=22命令添加规则。 - 性能优化:对于大型仓库,建议启用Git的压缩传输功能(在服务器
git config --global core.compression 9设置压缩级别),或使用Git LFS管理大文件。
相关问答FAQs
Q1: 客户端克隆时报错“Permission denied (publickey,password)”如何解决?
A: 此问题通常由SSH权限或密钥配置错误导致,首先检查服务器/home/gituser/.ssh/authorized_keys文件是否包含客户端公钥内容,并确保文件权限为600,目录权限为700;若使用HTTP协议,需确认IIS中基本身份验证是否启用,以及gituser用户凭据是否正确。
Q2: 如何限制Git服务器用户的仓库访问权限?
A: 可通过以下方式实现:
- SSH级别:在
authorized_keys文件中通过命令限制用户只能访问指定仓库,command="git-shell -c 'cd /path/to/project.git && git receive-pack '",强制用户登录后只能在该仓库执行操作。 - 操作系统级别:为不同用户创建不同仓库目录,并通过NTFS权限控制用户对目录的访问范围,例如用户A仅能访问
project1.git,用户B仅能访问project2.git。

