Gitea的安装和配置以及应用
一、安装
1、创建数据库和数据库账户(pg)
su – postgres -c "psql"
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
2、下载gitea,给与可执行权限
wget -O gitea https://dl.gitea.com/gitea/1.23.6/gitea-1.23.6-linux-amd64
chmod +x gitea
cp gitea /usr/local/bin/gitea
3、创建系统用户
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
4、创建相关目录
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
5、创建服务Gitea
sudo vim /etc/systemd/system/gitea.service
[Unit]
Description=Gitea
After=postgresql.service
[Service]
User=git
Group=git
Environment="GITEA_WORK_DIR=/var/lib/gitea"
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
[Install]
WantedBy=multi-user.target
6、激活gitea 并将它作为系统自启动服务
sudo systemctl enable gitea
sudo systemctl start gitea
7、初始化
访问域名,完成Gitea的初始化
http://192.168.1.215:3000/
第一个注册的账号是管理员账号。
8、修改配置文件
配置文件在/etc/gitea/app.ini
#service 下增加这一行: 不允许匿名的push
ENABLE_ANONYMOUS_GIT_PUSH = FALSE
# 修改log模式为file
MODE = file
9、windows下git安装
https://git-scm.com/downloads/win
二、小团队最佳实践
以下由deepseek生成。
1、Fork + Pull Request VS 直接Push到主仓库
小团队10人左右内部通过gitea构建git服务器,有两种使用方式:1、每个人从主仓库fork到个人仓库下,然后修改代码后push到自己的个人仓库,再通过pull request提交的主仓库。 2、直接从主仓库pull代码,修改后直接push到主仓库。 哪种方式比较好?
对于10人左右的小团队使用Gitea构建Git服务器,两种协作方式的优劣对比如下,最终建议需结合团队具体情况:
### **方式1:Fork + Pull Request 模式**
**优点:**
1. **代码审查严格**:所有变更必须通过PR合并,便于团队讨论和代码质量把控。
2. **权限控制灵活**:主仓库可限制直接Push,仅维护者能合并PR,适合开源项目或严格权限管理的场景。
3. **隔离性高**:个人开发在独立仓库完成,避免直接污染主分支。
4. **历史清晰**:PR记录可追溯代码修改意图和讨论过程。
**缺点:**
1. **流程复杂**:需频繁同步主仓库变更(需手动添加Upstream远程并拉取)。
2. **效率较低**:小修改也需走PR流程,可能影响快速迭代。
### **方式2:直接Push到主仓库**
**优点:**
1. **简单高效**:适合高频协作的小团队,快速完成代码共享。
2. **减少操作成本**:无需维护Fork仓库,同步代码更直接。
**缺点:**
1. **风险较高**:误操作可能导致主分支损坏(需通过分支保护规则缓解)。
2. **缺乏强制审查**:依赖成员自觉,代码质量可能参差不齐。
---
### **综合建议:**
1. **推荐方式2(直接Push)+ 分支保护**
- **适用场景**:团队成员熟悉Git、信任度高、追求效率。
- **优化措施**:
- 主仓库设置 `main`/`master` 分支为**保护分支**,仅允许通过PR合并(需Gitea权限支持)。
- 日常开发在**非保护分支**(如 `dev` 或 `feature-xxx`)直接Push,定期通过PR合并到主分支。
- 结合Code Review:即使直接Push,也要求团队成员互相审查后再合并。
2. **方式1(Fork+PR)的适用场景**
- 团队中有新人需要学习Git工作流。
- 项目为开源或需要严格权限隔离(如部分成员仅限只读)。
### **补充最佳实践**
- **分支策略**:无论哪种方式,建议采用 `main` + `feature` 分支,避免直接在主分支开发。
- **自动化工具**:通过Gitea的Webhook触发CI/CD,确保PR或Push后自动运行测试。
- **文档规范**:明确团队协作规则,例如提交信息格式、PR描述模板等。
最终,**方式2(直接Push + 分支保护)更适合小团队高效协作**,同时通过技术约束(保护分支)和流程规范(非强制Code Review)平衡灵活性与安全性。
2、gitea的核心概念
在 Gitea 中,**组织(Organization)** 是一个用于集中管理多个仓库和团队成员的概念,类似于 GitHub/GitLab 中的组织或群组。它适用于团队协作,可以更灵活地管理权限、仓库和成员。以下是 Gitea 中组织的核心概念和功能:
---
### **1. 组织的作用**
- **团队协作**:将多个用户(成员)归集到一个组织下,统一管理仓库和权限。
- **权限隔离**:组织可以拥有独立的仓库、团队(Teams)和访问控制,与个人用户(User)的仓库分离。
- **资源归类**:适用于公司、开源项目、部门等场景,所有相关仓库集中在组织名下(如 `org-name/repo-name`)。
---
### **2. 组织 vs 个人用户**
| **特性** | **组织(Organization)** | **个人用户(User)** |
|----------------|-------------------------------|-----------------------------|
| **所有者** | 由用户创建和管理 | 个人账户 |
| **仓库归属** | 属于组织(而非个人) | 属于个人 |
| **权限管理** | 通过**团队(Teams)**分层控制 | 直接管理个人仓库的协作者 |
| **用途** | 团队协作、公司项目 | 个人开发 |
---
### **3. 组织的核心功能**
#### **(1)团队(Teams)**
- 组织内可以创建多个团队(如 `Developers`、`Admins`),每个团队可以分配不同的权限(读、写、管理员等)。
- 成员可以属于多个团队,权限叠加(最高权限优先)。
#### **(2)仓库管理**
- 组织可以拥有多个仓库,仓库的访问权限由团队控制。
- 示例:
- `Admins` 团队:对全部仓库有管理员权限。
- `Developers` 团队:只能推送(Push)到指定仓库。
#### **(3)成员角色**
- **所有者(Owner)**:组织的最高管理者,可修改组织设置、删除组织。
- **成员(Member)**:普通成员,权限由所属团队决定。
---
### **4. 典型使用场景**
#### **场景1:公司内部开发**
- 创建一个组织(如 `my-company`),下设团队:
- `backend-team`:拥有后端仓库的写入权限。
- `frontend-team`:拥有前端仓库的写入权限。
- `qa-team`:仅限读取仓库。
#### **场景2:开源项目**
- 组织名(如 `awesome-project`)作为项目官方命名空间。
- 通过团队控制核心开发者(Maintainers)和贡献者(Contributors)的权限。
---
### **5. 如何创建和管理组织?**
1. **创建组织**:
- 登录 Gitea → 点击右上角 `+` → 选择 `New Organization`。
2. **添加成员**:
- 进入组织 → `Members` → 邀请用户。
3. **创建团队**:
- 进入组织 → `Teams` → 定义权限(Read、Write、Admin)。
4. **分配仓库**:
- 在团队设置中关联仓库,或直接在仓库设置中授权团队。
---
### **6. 最佳实践**
- **最小权限原则**:按需分配团队权限(如避免直接给全员 `Admin`)。
- **仓库命名规范**:如 `org-name/project-name` 提高辨识度。
- **结合分支保护**:在组织仓库中设置保护分支,确保代码安全。
---
### **总结**
Gitea 的**组织**是团队协作的核心单元,通过**团队(Teams)**实现灵活的权限管理,适合多人协作的项目。对于10人左右的小团队,建议:
1. 创建一个组织集中管理所有仓库。
2. 根据角色划分团队(如 `Devs`、`Leads`),而非直接赋予个人权限。
3. 结合分支保护 + PR 流程(即使直接Push到非保护分支)。