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到非保護分支)。