如何通过HTTP/HTTPS协议无需SSH创建远程Git仓库
解决方案
1. 服务端前置配置调整
首先需要调整服务器上的Apache与Git配置,让git-http-backend支持自动创建新仓库:
- 给Apache运行用户授予Git仓库根目录的读写权限,以Debian/Ubuntu系统、仓库根目录为
/srv/git、Apache运行用户为www-data为例,执行如下命令:chown -R www-data:www-data /srv/git chmod -R 755 /srv/git - 开启Git全局的HTTP推送支持:
git config --global http.receivepack true - 修改Apache站点的Git服务配置,添加
GIT_HTTP_EXPORT_ALL环境变量,配置示例如下:SetEnv GIT_PROJECT_ROOT /srv/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ <Directory "/usr/lib/git-core/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Require all granted </Directory> # 可选:添加HTTP基础认证,避免匿名用户随意操作仓库 <Location /git> AuthType Basic AuthName "Private Git Repos" AuthUserFile /srv/git/.htpasswd Require valid-user </Location> - 重启Apache服务使配置生效。
2. 本地创建远程仓库操作流程
Git本身不支持直接通过git init --bare 远程地址的方式创建远程仓库,正确操作步骤如下:
- 本地新建项目目录,完成Git初始化和初始提交:
mkdir your-new-project cd your-new-project git init echo "# 项目说明" > README.md git add . git commit -m "初始提交" - 绑定远程仓库地址:
git remote add origin https://你的服务器地址/git/your-new-project.git - 首次推送全部分支到远程,服务端会自动创建对应裸仓库:
git push --set-upstream origin --all git push origin --tags
可选:封装快捷命令简化操作
你可以在本地封装一个自定义Git命令,实现一行命令创建远程仓库:
- 在本地
~/.local/bin目录下新建名为git-remote-init的脚本,内容如下:#!/bin/bash if [ $# -ne 1 ]; then echo "用法: git remote-init <远程仓库地址>" exit 1 fi TEMP_DIR=$(mktemp -d) cd "$TEMP_DIR" git init --quiet git commit --allow-empty -m "初始空提交" --quiet git remote add origin "$1" git push --quiet origin master rm -rf "$TEMP_DIR" echo "远程仓库 $1 创建完成" - 给脚本添加执行权限:
chmod +x ~/.local/bin/git-remote-init - 后续需要创建远程仓库时,直接执行即可:
git remote-init https://你的服务器地址/git/new-project.git
内容的提问来源于stack exchange,提问作者Ingo
相关产品推荐
相关产品推荐

