横向对比
表格中的符号含义:
✓ - 支持
⁄ - 部分支持
✘ - 不支持
? - 不确定
特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
---|---|---|---|---|---|---|---|
开源免费 | ✓ | ✓ | ✘ | ✓ | ✘ | ✘ | ✓ |
低资源开销 (RAM/CPU) | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ |
支持多种数据库 | ✓ | ✓ | ✘ | ⁄ | ⁄ | ✓ | ✓ |
支持多种操作系统 | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ |
升级简便 | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
支持 Markdown | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
支持 Orgmode | ✓ | ✘ | ✓ | ✘ | ✘ | ✘ | ? |
支持 CSV | ✓ | ✘ | ✓ | ✘ | ✘ | ✓ | ? |
支持第三方渲染工具 | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ | ? |
Git 驱动的静态 pages | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
Git 驱动的集成化 wiki | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
部署令牌 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
仓库写权限令牌 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
内置容器 Registry | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
外部 Git 镜像 | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ |
WebAuthn (2FA) | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ? |
内置 CI/CD | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
子组织:组织内的组织 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ |
特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
---|---|---|---|---|---|---|---|
仓库主题描述 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
仓库内代码搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
全局代码搜索 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✓ |
Git LFS 2.0 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
组织里程碑 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
细粒度用户角色 (例如 Code, Issues, Wiki) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
提交人的身份验证 | ⁄ | ✘ | ? | ✓ | ✓ | ✓ | ✘ |
GPG 签名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
SSH 签名的提交 | ✓ | ✘ | ✘ | ✘ | ✘ | ? | ? |
拒绝未用通过验证的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
仓库活跃度页面 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
分支管理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
建立新分支 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
在线代码编辑 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
提交的统计图表 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
模板仓库 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✘ |
特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
---|---|---|---|---|---|---|---|
工单跟踪 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
工单模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
标签 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
时间跟踪 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
支持多个负责人 | ✓ | ✘ | ✓ | ✘ | ✓ | ✘ | ✘ |
关联的工单 | ✘ | ✘ | ⁄ | ✓ | ✓ | ✘ | ✘ |
私密工单 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
评论反馈 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
锁定讨论 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
工单批处理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
工单看板 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
从工单创建分支 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
工单搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
工单全局搜索 | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
工单依赖关系 | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
通过 Email 创建工单 | ✘ | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ |
服务台 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
---|---|---|---|---|---|---|---|
Pull/Merge requests | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Squash merging | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
Rebase merging | ✓ | ✓ | ✓ | ✘ | ⁄ | ✘ | ✓ |
评论 Pull/Merge request 中的某行代码 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
指定 Pull/Merge request 的审核人 | ✓ | ✘ | ⁄ | ✓ | ✓ | ✓ | ✓ |
解决 Merge 冲突 | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
限制某些用户的 push 和 merge 权限 | ✓ | ✘ | ✓ | ⁄ | ✓ | ✓ | ✓ |
回退某些 commits 或 merge request | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
Pull/Merge requests 模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
查看 Cherry-picking 的更改 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
下载 Patch | ✓ | ✘ | ✓ | ✓ | ✓ | / | ✘ |
特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
---|---|---|---|---|---|---|---|
支持 Webhook | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
自定义 Git 钩子 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
集成 AD / LDAP | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
支持多个 LDAP / AD 服务 | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ |
LDAP 用户同步 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
SAML 2.0 service provider | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
支持 OpenId 连接 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ✘ |
集成 OAuth 2.0(外部授权) | ✓ | ✘ | ⁄ | ✓ | ✓ | ? | ✓ |
作为 OAuth 2.0 provider | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
二次验证 (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ |
集成 Mattermost/Slack | ✓ | ✓ | ⁄ | ✓ | ✓ | ⁄ | ✓ |
集成 Discord | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
集成 Microsoft Teams | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
显示外部 CI/CD 的状态 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
Gitea
👍 推荐
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。我现在使用的就是它。相较于 gitlab 更轻量级,内存占用更小,适合个人或小型团队使用。
version: "3" |
在宝塔上使用 Docker 安装
- 在宝塔面板进入 Docker 设置页面,如图所示获取 Gitea 镜像,填最新版:
gitea/gitea:latest
- 创建基于 Gitea 镜像的 Docker 容器,如图:
- 已经安装完成了,现在需要新建站点、解析域名、设置反向代理:
- 打开域名,进入初始化配置,配置完成即可使用。
原文地址:
https://www.bangzhujiaocheng.com/337.html
以 macOS 为例,输入这两行代码就可以完成本地安装:
brew tap gitea/tap https://gitea.com/gitea/homebrew-gitea |
Gitblit
🚫 不推荐
这是我曾在公司内网搭建供团队使用的工具,相较于前面提到的几款而言不是很推荐使用这个了。
安装 JDK
下载并安装 JDK:javase-downloads
安装并配置 Gitblit
- 下载 Gitblit:gitblit
- 解压 Gitblit,进入目录
~/gitblit-1.8.0/data/defaults.properties
- 用编辑器打开
defaults.properties
git.repositoriesFolder = /Users/用户名/gitserver/gitRepository
server.httpPort = 7070
启动服务
在终端中执行 gitblit.sh
脚本即可启动服务:
./gitblit.sh |
建议设置开机自启动
通过 Mac 的自动化工具,将启动指令写成脚本,系统启动后自动运行脚本即可。
Windows 平台可以添加到启动计划任务中。
客户端访问
用服务器 IP + 端口号来访问。例如我的电脑的 IP 是 10.8.12.200
,那么在局域网内另外一台电脑访问 http://10.8.12.200:7070
就可以看到管理页面了:
网页操作和使用 GitHub、Coding 等平台相似,非常简单。