官网
官方下载地址:https://dl.gitea.com/gitea/
各版本控制软件对比
| 对比项 | SVN | Git | Mercurial | Perforce |
|---|---|---|---|---|
| 版本控制类型 | 集中式(依赖中央服务器) | 分布式(本地完整版本库) | 分布式 | 集中式(企业级) |
| 服务端 | Apache Subversion | Gitea、Gogs、GitLab、GitHub | RhodeCode、Mercurial Server | Helix Core |
| 客户端 | TortoiseSVN | Git Bash、TortoiseGit、SourceTree | hg、TortoiseHg | P4V |
| Eclipse 插件 | Subclipse、Subversive | EGit | MercurialEclipse | Perforce Plugin |
| IDEA 插件 | Subversion | Git | Mercurial | Perforce |
| 核心特点 | 集中管理,目录级权限控制,简单直接,适合文档、非代码类版本管理 | 本地有完整仓库,分支灵活高效,适合多人协作、开源与现代软件开发 | 分布式,命令简洁,跨平台,学习曲线比 Git 平缓,生态较小 | 企业级集中式,大文件、二进制支持强,权限精细,多用于游戏、大型工业项目 |
| 个人部署服务端推荐 | VisualSVN Server | Gitea | 一般 | 复杂,不推荐个人部署 |
| 部署特点 | VisualSVN Server:轻量服务端,配置简单,但是只有WIndows端 svnserve:跨平台,命令行 | Gitea:个人部署天花板推荐 Gogs:比 Gitea GitLab:相对更重量,麻烦些 | 服务端部署简单,但生态和工具链不如 Git 丰富 | 服务端重、配置复杂,运维成本高,个人/小团队不适用 |
使用docker安装
1.安装并运行Gitea
bash
#创建目录
sudo mkdir -p /service/docker/gitea
#分配权限
sudo chown -R ubuntu:ubuntu /service/docker/gitea
首次运行 Gitea 容器
bash
docker run -d \
--name gitea \
--restart unless-stopped
-p 3000:3000 \
-v /service/docker/gitea:/data \
gitea/gitea:latest
| 参数 | 作用 |
|---|---|
-d |
后台运行(daemon) |
--name gitea |
容器命名为 gitea(方便管理) |
--restart unless-stopped |
设置自动重启 |
-p 3000:3000 |
将宿主机 3000 端口映射到容器 3000 端口 |
-v /service/docker/gitea/data |
挂载数据目录(必须) |
gitea/gitea:latest |
Gitea 官方镜像(获取官方镜像) |
2.登陆页面
网络通都能打开,只是管理员登陆和非管理员登陆权限不通
bash
#本地访问
http://localhost:3000
#宿主机访问
#每个人的地址不一样,看你虚拟机的IP
http://192.168.140.129:3000
首次打开进行配置
其他的不用动,设置好管理员和管理员密码

3.重启
不需要重启,这里只是列一下命令
bash
# 查看所有容器(包括停止的)
docker ps -a
#停止容器
docker stop gitea
# 示例:重新启动my-nginx容器
docker start gitea
# 查看容器启动日志(排查启动失败问题)
docker logs gitea
基础设置
1.查看配置文件地址
管理员登陆之后查看配置文件地址
我这里是:/data/gitea/conf/app.ini
因为运行在docker上,所以实际路径是容器启动时挂载的路径:/service/docker/gitea/gitea/conf/app.ini

2.修改配置文件
bash
# 进入配置文件目录
cd /service/docker/gitea/gitea/conf
#设置仅能管理员新建用户
sudo sed -i 's/DISABLE_REGISTRATION = false/DISABLE_REGISTRATION = true/' app.ini
#设置OAUTH_USER匹配的用户名
#不设置会导致只要有一个密码与现有用户的密码相同就能通过验证
sudo sed -i '/^\[server\]/a OAUTH_USER = admin' app.ini
#重启生效
docker restart gitea
3.新建用户


上面两项不用动,输入信息创建就行

仓库管理
1.创建仓库

设置为私有,控制权限
这时候别人登陆是看不到这个仓库的

增加协作者,可以给别人修改这个仓库的权利,并且能对协作者进行权限管理

2.创建分支
进到仓库的分支选项创建分支

3.设置保护分支
添加规则

设置main分支为受保护的分支

设置合并请求批准为1
审批人设置为管理员(自己)

代码
1.TortoiseGit使用http拉取代码


首次拉取时,会先弹出Gitea登陆的页面,登陆之后会让授权
授权之后会保存到Windows凭据,之后就不需要登陆了
如果需要切换用户,需要先删除Windows凭据

无权限时会报错找不到仓库

2.eclipse使用插件拉取代码
先新建好工作空间,例如:D:\Develop\eclipse workspace\WeChat
建议每个项目有个单独的工作空间

卸载gitea
bash
#停止容器
docker stop gitea
#查看容器状态
docker ps -a
# 彻底删除容器
docker rm gitea
#删除镜像
docker rmi gitea
根据上面的配置文件的地方,把配置文件删除
bash
sudo rm -rf gitea
服务器间迁移
迁移时数据文件单独迁移,Docker镜像自行下载
把配置文件打包进镜像会导致无法动态修改配置
避免破坏 Docker 设计原则:Docker 镜像应仅包含应用程序,不包含运行时数据(如配置、数据库)
bash
# 进入数据目录
cd /service/docker
# 打包整个 Gitea 数据目录
sudo tar -czvf gitea_data.tar.gz gitea
在新服务器解压并启动
bash
# 1. 创建目录并解压
cd /service
sudo mkdir -p docker
sudo tar -xzvf /home/ubuntu/gitea_data.tar.gz -C /service/docker
# 2. 启动容器(自动拉取镜像)
docker run -d \
--name gitea \
-p 3000:3000 \
-v /service/docker/gitea:/data \
gitea/gitea:latest
解决问题
1.关于提交作者的显示
先说总结:作者可以随便写,提交者只能是Gitea的用户
实测,仓库里面的提交记录是根据用户的邮箱匹配的
邮箱匹配到就会显示头像
匹配不到就默认显示,因为作者也是能手动修改的的,没什么限制
所以看提交记录还是要去主页面看,那里显示的是正常的用户名和头像
仓库显示的作者:是客户可以随意修改的信息


主页面显示的是Gitea服务器的用户
