当前位置: 首页 > news >正文

Gitea:轻量级的自托管Git服务

  欢迎光临我的个人博客查看最新文章:river's blog

在当今的软件开发世界中,代码托管平台是必不可少的工具。而对于寻求自主控制和数据隐私的团队与开发者来说,Gitea提供了一个完美的解决方案。

1、 Gitea简介

Gitea(发音为ɡɪˈtiː)是一款采用Go语言编写的轻量级自托管Git服务,支持运行在Linux、macOS、Windows乃至树莓派等多种平台上。它与GitHub、GitLab等功能类似,提供了代码托管、团队协作、问题跟踪、代码审查等开发者所需的核心功能。

Gitea最初是从Gogs项目分支而来,其名称是“Gi”(表示Git)和“tea”(茶)的组合,意为“一杯茶的Git服务”,形象地体现了其轻量级和易用性的特点。

官网:Gitea - 轻量级全功能 DevSecOps 平台

1.1 主要特性

Gitea具备以下突出特性:

  • 轻量快速:得益于Go语言的高效,Gitea启动速度快,资源占用极低,甚至可以在树莓派等资源受限的设备上流畅运行。

  • 功能丰富:提供Pull Request、Issue跟踪、Wiki、Webhook、代码审查等现代代码托管平台的核心功能。

  • 易于部署:通常只需一个二进制文件即可完成安装,开箱即用。

  • 完全开源:采用MIT许可证,社区驱动,透明开放。

  • 跨平台支持:支持Linux、macOS、Windows及ARM架构。

  • CI/CD集成:通过Gitea Actions支持CI/CD功能,兼容GitHub Actions的YAML格式工作流。

  • 多包管理支持:支持超过20种不同类型的公共或私有软件包管理。

1.2 Gitea与GitLab的简要对比

特性

Gitea

GitLab

资源占用

(轻量级,1核2G内存即可运行)

高(建议至少4核8G内存)

功能焦点

代码托管与协作(核心功能)

全栈DevOps(功能全面)

部署维护

简单(依赖少,升级方便)

相对复杂(需较多技术投入)

适用场景

个人开发者、中小团队、资源有限环境

大型团队、企业,需要全流程DevOps

Gitea非常适合小型团队自托管个人项目管理以及教育或实验室环境,它是一个低成本且能有效保护代码私密性的开源解决方案。

2、安装部署

2.1 安装准备

在安装Gitea之前,需要安装配置数据库,此处以MySQL为例。

创建MySQL用户及数据库:

# 创建用户 gitea
CREATE USER 'gitea' IDENTIFIED BY 'gitea';
# 创建数据库giteadb
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
# 将数据库上的所有权限授予gitea用户
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
FLUSH PRIVILEGES;

2.2 MacOS安装

Gitea提供了多种安装方式,以下介绍两种最常用的方法:二进制文件安装和Docker安装。

以MacOS为例:

# 安装
brew install gitea# 启动服务 
brew services start gitea

2.3 Docker安装

创建docker-compose.yaml文件:

version: "3"services:server:image: gitea/gitea:latestcontainer_name: gitearestart: alwaysenvironment:- GITEA__database__DB_TYPE=mysql- GITEA__database__HOST=db:3306- GITEA__database__NAME=giteadb- GITEA__database__USER=gitea- GITEA__database__PASSWD=giteavolumes:- /data/gitea:/data- /etc/timezone:/etc/timezone:ro- /etc/localtime:/etc/localtime:roports:- "3000:3000"- "222:22"depends_on:- dbdb:image: mysql:8.0restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: giteaMYSQL_USER: giteaMYSQL_PASSWORD: giteaMYSQL_DATABASE: giteadbvolumes:- /data/mysql:/var/lib/mysql

在包含docker-compose.yaml文件的目录下运行:

docker-compose up -d

安装部署具体可参考:安装 | Gitea Documentation

3、 初始化及基本使用

安装完成并且服务启动后,需要进行初始配置才能使用Gitea。

通过Web界面完成安装
在浏览器中访问服务器的IP地址或域名(默认端口3000),例如http://your-server-ip:3000。你将看到Gitea的初始化安装界面

完成初始配置后,进入首页

Gitea安装配置完成后,你就可以开始使用了:

  1. 创建仓库:登录后,点击页面右上角的“+”号,选择“新建仓库”,填写仓库名称、描述并选择可见性(公开或私有)。

  2. 管理团队:在组织或仓库的设置中,可以添加团队成员并分配不同的权限(如只读、读写、管理员)。

  3. 使用Pull Request:开发者可以Fork仓库或创建分支进行开发,然后通过Pull Request请求合并代码,进行代码审查。

  4. 问题跟踪:使用Issues功能来跟踪Bug、提出新功能想法或管理任务。

  5. 配置SSH密钥:在“用户设置” -> “SSH密钥”中添加你的公钥,以便通过SSH协议与仓库交互。

创建仓库

仓库详情

然后就可以使用git命令进行操作了

如克隆仓库到本地

git clone http://127.0.0.1:3000/river106/test-project.git

更多功能,大家可自行安装探索~

4、 总结

Gitea以其轻量级、资源占用低、部署简单的特点,成为了自托管Git服务的优秀选择。它特别适合个人开发者、中小型团队以及任何希望完全控制自己代码数据的用户。

通过本文介绍的二进制或Docker方式,你可以在短时间内快速搭建起一个功能完善的代码托管平台,享受类似GitHub的开发协作体验,同时保证数据的私有性和安全性。

无论是为了摆脱对第三方平台的依赖,还是为了在内网搭建高效的协作环境,Gitea都是一杯值得你细细品味的“好茶”。


文章转载自:

http://EusBw6OP.pLqhb.cn
http://Avz8USZ8.pLqhb.cn
http://GOXW0prE.pLqhb.cn
http://zQItumGv.pLqhb.cn
http://9eoEZDXU.pLqhb.cn
http://BQmga0de.pLqhb.cn
http://Muw4cQmv.pLqhb.cn
http://LvXYL5QJ.pLqhb.cn
http://VMcH1pmu.pLqhb.cn
http://sU4E4BTR.pLqhb.cn
http://T4nt7w0g.pLqhb.cn
http://lOEqXZ0U.pLqhb.cn
http://FBSP1zu6.pLqhb.cn
http://nVrGuDN3.pLqhb.cn
http://N6PPVtpv.pLqhb.cn
http://KxkanTDB.pLqhb.cn
http://oIEUsue4.pLqhb.cn
http://P3lVBSK3.pLqhb.cn
http://UUUUfsMa.pLqhb.cn
http://8qSGWb0V.pLqhb.cn
http://JHSg4FAh.pLqhb.cn
http://D271xpI2.pLqhb.cn
http://TLjiIno3.pLqhb.cn
http://7AbZkevd.pLqhb.cn
http://CTBW2oSZ.pLqhb.cn
http://KyWOQsJy.pLqhb.cn
http://daJEebpT.pLqhb.cn
http://5Ev5SCsU.pLqhb.cn
http://5Ki0yZet.pLqhb.cn
http://3iyg7Nsa.pLqhb.cn
http://www.dtcms.com/a/370233.html

相关文章:

  • 【CF】Day139——杂题 (绝对值变换 | 异或 + 二分 | 随机数据 + 图论)
  • ElementUI之Upload 上传的使用
  • 在线教育系统源码选型指南:功能、性能与扩展性的全面对比
  • Web漏洞挖掘篇(二)—信息收集
  • 从零开始的python学习——文件
  • ThreadLocal 深度解析:原理、应用场景与最佳实践
  • Error metrics for skewed datasets|倾斜数据集的误差指标
  • 前端错误监控:如何用 Sentry 捕获 JavaScript 异常并定位源头?
  • 9.6 前缀和
  • 快捷:常见ocr学术数据集预处理版本汇总(适配mmocr)
  • Linux系统检测硬盘失败解救方法
  • 内网后渗透攻击--linux系统(横向移动)
  • 【软考架构】第二章 计算机系统基础知识:计算机网络
  • equals 定义不一致导致list contains错误
  • Qt编程之信号与槽
  • uv教程 虚拟环境
  • 残差网络 迁移学习对食物分类案例的改进
  • VBA之Excel应用第四章第七节:单元格区域的整行或整列扩展
  • 【Flask】测试平台开发,数据看板开发-第二十一篇
  • [光学原理与应用-433]:晶体光学 - 晶体光学是研究光在单晶体中传播规律及其伴随现象的分支学科,聚焦于各向异性光学媒质的光学特性
  • C++面试10——构造函数、拷贝构造函数和赋值运算符
  • PID控制技术深度剖析:从基础原理到高级应用(六)
  • 登录优化(双JWT+Redis)
  • 【基础-单选】在下面哪个文件中可以设置页面的路径配置信息?
  • C++ 内存模型:用生活中的例子理解并发编程
  • 【3D图像算法技术】如何在Blender中对复杂物体进行有效减面?
  • 电脑音频录制 | 系统麦克混录 / 系统声卡直录 | 方法汇总 / 常见问题
  • 论文阅读:VGGT Visual Geometry Grounded Transformer
  • 用 PHP 玩向量数据库:一个从小说网站开始的小尝试
  • [光学原理与应用-432]:非线性光学 - 既然光也是电磁波,为什么不能直接通过电生成特定频率的光波?