怎么在自己的服务器上搭建一个git

在自己的服务器上搭建Git,本质上就是安装Git软件、创建一个裸仓库,并通过SSH协议让客户端连接,个人使用推荐“Linux服务器+Git裸仓库+SSH”方案,团队协作则推荐部署Gitea或GitLab,成本低且可控性强。

搭建前先想清楚:你的服务器适合哪种Git方案

很多朋友一上来就搜“怎么在自己的服务器上搭建一个git”,结果搜出一堆教程,有讲GitLab的,有讲Gitea的,还有直接敲git init --bare的,看完更懵了,其实选哪种方案,完全取决于你的使用场景和服务器配置。

搭建git服务器
加载中
  • 个人项目备份或小团队(5人以内)协作:直接装Git,建裸仓库,走SSH协议,这是最轻量、最省资源的方案,512MB内存的便宜云服务器就能跑得动。
  • 团队协作需要代码审查、Issue管理:部署Gitea,它是用Go写的,资源占用极小,1核1G的服务器带起来毫无压力,还自带Web界面和权限管理。
  • 中大型团队,需要CI/CD流水线深度集成:上GitLab,功能全但吃配置,官方推荐至少4核8G内存,云服务器成本会明显上去。

这里顺便回应一个高频疑问:个人服务器搭建git仓库选哪种方案更省心? 如果你不想折腾,就选Gitea;如果你想彻底弄懂Git原理,就用裸仓库方案,两者不冲突,你完全可以在裸仓库的基础上再装个Gitea做Web界面。

最硬核的裸仓库搭建(Linux + SSH)

这个方案适合有Linux基础、喜欢掌控一切的朋友,整个过程大概三步:装Git、建裸仓库、配置SSH公钥。

第一步:服务器端安装Git并创建专用用户

先登录你的服务器(以Ubuntu/Debian为例),执行:

sudo apt update
sudo apt install git -y

出于安全考虑,不建议用root账号直接跑Git操作,创建一个专用用户,比如叫git:

sudo adduser --disabled-password git

--disabled-password意思是这个用户不能通过密码登录,只能用SSH密钥,安全性更好。

第二步:初始化裸仓库

切到git用户,创建一个存放仓库的目录,然后初始化裸仓库:

sudo su - git
mkdir -p ~/repos
cd ~/repos
git init --bare my-project.git

注意,裸仓库(

怎么在自己的服务器上搭建一个git

--bare)没有工作目录,它只保存版本历史,是专门给服务器端用的,你不可能在服务器上直接看到文件内容,只能通过git clone拉下来。

第三步:配置SSH公钥登录

在你的本地电脑上生成密钥(如果还没有的话):

ssh-keygen -t ed25519 -C "your_email@example.com"

然后把公钥加到服务器的authorized_keys里:

cat ~/.ssh/id_ed25519.pub | ssh git@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

最后在本地测试克隆:

git clone git@your_server_ip:repos/my-project.git

看到Cloning into 'my-project'...就说明成功了,整个git服务器搭建教程的核心就这三步,剩下的就是日常add、commit、push操作。

进阶操作:用webhook实现自动部署

很多朋友搭好Git后,下一个需求就是“我push代码后,服务器上网站怎么自动更新”,这就涉及服务器搭建git webhook实现自动部署的玩法。

原理很简单:在服务器上写一个接收HTTP请求的脚本,当Git服务器收到push事件时,通过webhook通知这个脚本,脚本再执行git pull或git checkout来更新网站文件。

大致步骤如下:

  • 在服务器上创建网站目录,并克隆一份代码过去(非裸仓库)。
  • 写一个Shell脚本,内容大致是cd /var/www/my-site && git pull origin main。
  • 用Node.js或Python写一个极简的HTTP服务,监听特定端口,收到请求后执行上面的脚本。
  • 在Gitea或GitHub仓库设置里添加webhook地址,指向你的服务器IP和端口。

这个方案比用rsync定时同步更及时,代码一推送,网站秒级更新。

偷懒但强大的Gitea部署

如果你觉得裸仓库太“原始”,不想记SSH配置,也不想用命令行管理用户权限,Gitea绝对是你想要的,业内专家指出,Gitea是目前轻量级Git服务里社区最活跃的项目之一,支持一键安装。

为什么中小团队普遍选择Gitea

Gitea的吸引力在于它把Git、用户管理、Issue、Pull Request、Wiki都打包进了一个不到100MB的二进制文件里,部署方式极其简单:

怎么在自己的服务器上搭建一个git

wget -O gitea https://dl.gitea.com/gitea/1.21.0/gitea-1.21.0-linux-amd64
chmod +x gitea
./gitea web

然后浏览器访问http://your_server_ip:3000,跟着引导填数据库(SQLite就够)、站点名称、管理员账号,搞定。

用Docker Compose部署更省心

不想手动管理二进制文件?用Docker Compose是很多人的选择,写一个docker-compose.yml:

version: "3"
services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
    ports:
      - "3000:3000"
      - "2222:22"

执行docker-compose up -d,Gitea就起来了,这里把服务器的22端口映射到容器的22端口,这样客户端就能直接用git@your_server_ip:owner/repo.git这种格式克隆,不需要带端口号。

新手搭建git服务器用什么系统更合适? 如果你用的是宝塔面板(BT Panel),Gitea甚至支持在面板的软件商店里直接一键部署,连Docker命令都不用敲,国内云服务器厂商的镜像市场里也常有预装Gitea的镜像,买完就能用。

权限管理与安全加固:别让服务器裸奔

很多教程搭完Git就结束了,但真实场景中,权限管理才是让你省心的关键,下面这些配置值得你花几分钟做。

用Git用户的SSH密钥限制命令

默认情况下,git用户登录服务器后是可以执行任意命令的,你可以在~/.ssh/authorized_keys前面加一段限制:

command="/usr/bin/git-shell -c "$SSH_ORIGINAL_COMMAND"",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-ed25519 AAAA...

这样用户只能执行Git相关操作,无法通过SSH登录Shell,这是Git官方推荐的做法,安全性大幅提升。

分支保护规则

如果用了Gitea或GitLab,在仓库设置里开启分支保护,禁止直接push到main或master分支,要求必须通过Pull Request合并,多人协作时,这一步能避免很多“手滑事故”。

定期备份

你的代码是无价的,服务器宕机或硬盘损坏是现实存在的风险,建议用

怎么在自己的服务器上搭建一个git

git bundle做全量备份:

git bundle create my-project.bundle --all

然后配合cron定时任务,每天凌晨把bundle文件同步到对象存储或另一台机器,行业共识认为,异地备份是数据安全的最低保障。

常见问题排查:搭好后连不上怎么办

搭建过程中,相当一部分问题出在SSH连接和权限上。

排查思路

  • Permission denied (publickey):先检查本地~/.ssh/id_ed25519.pub是否已加到服务器的authorized_keys里,再检查服务器~/.ssh目录权限是否为700,authorized_keys权限是否为600。
  • Repository not found:检查仓库路径是否写对,裸仓库的路径是相对于git用户主目录的,比如git@server:repos/my-project.git。
  • clone时卡住不动:大概率是服务器防火墙没放行22端口,或者云服务商的安全组规则没加,去云控制台检查入站规则。

连接不上的终极排查命令

ssh -v git@your_server_ip

加-v参数能看到详细的连接日志,卡在哪一步一目了然,这是所有排查手段里最直接有效的。

常见问题解答

问:个人服务器搭建git仓库和用Gitea有什么区别?

裸仓库方案只提供Git存储,没有Web界面、没有用户管理、没有Pull Request,Gitea是完整的Git服务,自带Web界面、用户系统、Issue跟踪,个人用裸仓库够用,多人协作强烈建议Gitea,能省下大量沟通成本。

问:服务器搭建git后怎么给同事开账号?

裸仓库方案下,把同事的公钥追加到服务器的~/.ssh/authorized_keys文件里即可,Gitea方案更简单,管理员在后台创建用户,然后把用户加入仓库的协作者列表就行,后者更适合频繁增减成员的情况。

问:国内云服务器搭建git仓库需要注意什么?

需要留意云服务商的安全组规则,默认情况下22端口可能未对外开放,国内服务器访问GitHub等境外服务不稳定,建议把镜像源或依赖包源换成国内源,如果团队都在国内,服务器选国内地域延迟会低很多。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/%e6%80%8e%e4%b9%88%e5%9c%a8%e8%87%aa%e5%b7%b1%e7%9a%84%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%b8%8a%e6%90%ad%e5%bb%ba%e4%b8%80%e4%b8%aagit/

赞 (0)
华为服务器H22H-05 怎么做raid
上一篇 2026年8月26日 15:15
服务器PE做系统光盘启动不了咋办,原因及解决方法
下一篇 2026年8月26日 15:27

相关推荐

  • 广西人脸识别测温一体机闸机定制哪家好?人脸测温闸机多少钱

    针对2026年智慧安防升级需求,广西人脸识别测温一体机闸机定制是解决区域高湿高热适配、无感通行与防疫合规的最优解,通过硬件防潮处理与算法调优,可实现0.2秒极速识别与±0.3℃医用级测温精度,为何广西场景必须深度定制闸机?极端气候对硬件的严苛考验广西地处亚热带季风气候区,年均相对湿度超75%,部分地区存在长达半……

    2026年4月24日
    4800
  • DMIT圣何塞VPS流量升级至128T是真的吗?美国VPS推荐性价比高

    DMIT圣何塞4837节点近期升级了部分套餐的流量配额,最高可达128T月流量,且年付享受7折、半年付8折优惠,最低配置月付仅需6.9美元,是追求高性价比与高稳定性的优质选择,在VPS租赁市场,圣何塞(San Jose)节点因其靠近北美西海岸核心互联网交换中心,一直是许多技术用户和跨境电商卖家的首选,DMIT作……

    2026年6月21日
    3300
  • 为什么k3服务器无法创建中间层组件,如何解决

    k3服务器无法创建中间层组件的核心解决方案是:先按“权限-环境-组件-补丁”四层排查法定位故障根因,再通过提升权限、修复依赖、手工注册组件或安装补丁包来逐一击破,咱们今天聊的这个话题,不少做金蝶K3的老铁都头疼过,正在财务办公室忙得不可开交,结果打开客户端,系统弹出个“无法创建中间层组件”的报错,瞬间心态就崩了……

    2026年8月7日
    1600
  • LOL中连接不上游戏服务器失败怎么回事,怎么办?

    LOL连接不上服务器,通常由网络波动、客户端文件损坏或服务器维护导致,按顺序检查官方状态、网络连通性和客户端完整性,九成问题都能解决,lol连接不上服务器失败怎么回事?先检查这些基础项服务器状态确认访问英雄联盟官方公告区或关注官方微博,查看是否有临时维护或故障通知,腾讯游戏通常会提前发布维护公告,若未通知则大概……

    2026年8月2日
    3500
  • CF服务器连接失败为何频发,网络延迟高怎么解决?

    CF(穿越火线)提示服务器连接失败,绝大多数情况下并非你的设备或账号出了问题,而是游戏服务器本身、本地网络链路或运营商路由这三大环节中的某一环“卡住了”,下面直接拆解最常见的原因,并附上可落地的排查步骤,cf总是服务器连接失败怎么回事?先分清两类原因很多玩家一遇到登录失败就急着重装游戏,其实效率很低,业内专家指……

    2026年10月17日
    200
  • 深圳游戏服务器租用报价多少钱,深圳游戏服务器租用价格怎么算

    深圳游戏服务器租用报价一般要多少钱?直接说结论:普通测试服或小规模业务,月付常见在数百元到千元级;BGP多线、独享带宽、带高防的主流游戏服,多在千元级到数千元每月;大带宽加T级高防会进入万元级,最终报价取决于带宽、防御、线路和机位配置,深圳游戏服务器租用报价一般要多少钱?先拆账单:报价不是一台机器的价格很多人问……

    程序编程 2026年10月8日
    100
  • 我的世界EC服务器空岛战争怎么卡bug?,怎么操作?

    如果你在《我的世界》EC服务器打空岛战争时觉得“卡”,核心答案很简单:先把网络延迟和客户端帧数分开排查,再针对服务器负载做调整,多数情况下,卡顿不是单一问题,而是“网络抖动+客户端配置+服务器端运算压力”三件事叠加的结果,下面我不绕弯子,直接按排查顺序拆开讲,整个过程不需要你改服务器后台权限,普通玩家就能完成大……

    2026年10月11日
    200
  • 我的世界ec服务器动物躲猫猫三楼怎么上去,怎么玩

    在EC服务器动物躲猫猫中,上三楼最直接的方法是找到二楼迷宫区域墙上的一幅画,点击画框右下角,隐藏的楼梯就会自动升起, 这条路径被多数老玩家作为默认选择,但地图更新后位置可能微调,你需要结合环境线索判断,EC服务器动物躲猫猫三楼隐藏线索分析许多玩家在二楼转悠半天找不到入口,是因为地图设计者把通道伪装成了普通装饰……

    2026年8月11日
    900
  • Win7时间服务器同步错误如何解决,同步失败原因排查?

    win7时间服务器同步错误怎么解决?核心思路就两步:先确保Windows Time服务正常运行,再把时间服务器换成当前可用的网络授时节点,手动调表只能救急,不改服务器地址迟早还会报错,为什么你的win7时间同步总是失败不少朋友遇到过这种场景:右下角时间赫然显示着昨天,右键“调整日期/时间”,点“立即同步”,等来……

    2026年10月9日
    100
  • 服务器ip是什么意思?服务器IP地址有什么作用?

    服务器IP地址是互联网协议地址在服务器端的具象化体现,它是服务器在网络世界中的唯一数字身份标识,是实现网络通信与数据传输的核心前提,服务器IP就是服务器在互联网上的“门牌号”,任何设备想要访问该服务器上的资源,都必须通过这个地址进行精准定位,理解服务器IP,关键在于掌握其作为网络通信基石的底层逻辑、分类体系以及……

    2026年3月29日
    10500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注