Files
technology-document/GIT技术.md
T
zgene 926fa05cf1 新文件: "AI\346\212\200\346\234\257/.env"
新文件:   "AI\346\212\200\346\234\257/docker-compose.yml"
	修改:     "GIT\346\212\200\346\234\257.md"
	删除:     README.md
2026-05-26 17:57:18 +08:00

227 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GIT 功能应用
公司 http://117.78.60.236:8000/users/sign_in zhanghonggang@csbr.cn w~7
## 安装
```bash
sudo apt install git
sudo apt install gitk git-cola 图形化工具
全局设置
git config --global user.email "zimyx@.com"
git config --global user.name "Your Name"
git config --global credential.helper store 全局级别保存凭据,免密
```
### SSH 免密推送配置(你提供的步骤非常重要)
配置 SSH 密钥后,可以避免每次推送代码时输入密码:
#### 1. 生成 SSH 密钥对
```
ssh-keygen -t rsa -C "your_email@example.com" 也可用用户名
```
按提示完成三次回车即可生成密钥。查看公钥内容:
```
cat ~/.ssh/id_rsa.pub
```
#### 2. 在 Gitea 中添加 SSH 公钥
登录 Gitea Web 界面 → 点击右上角头像 → 设置 → SSH/GPG 密钥 → 添加密钥 → 粘贴公钥内容并保存。
#### 3. 修改远程仓库地址为 SSH 格式
```
# 查看当前远程地址
git remote -v
# 修改为 SSH 地址
git remote set-url origin git@gitea.example.com:username/repo.git
```
#### 4. 测试 SSH 连接
```
在服务器上创建 zimy 用户并设置密码:
sudo useradd -m -s /bin/bash zimy
sudo passwd zimy 设置密码
ssh -T zimy@zgene.cn
```
首次连接会提示信任主机,输入 `yes` 确认。认证成功后会显示欢迎信息。
## 分支管理规范
分支类型与命名规范
### 分支命名格式
| 分支类型 | 命名格式 | 示例 |
|---------|---------|------|
| 主分支 | `main` | `main` |
| 开发分支 | `dev` | `dev` |
| 功能分支 | `feat/<功能名>` | `feat/event`, `feat/stream` |
| 热修复分支 | `hotfix/<问题名>` | `hotfix/event` |
| 发布分支 | `release/<版本号>` | `release/v1.0.0` |
### 分支用途说明
| 分支类型 | 用途说明 |
|---------|---------|
| `main` | 稳定版本分支,直接对应生产环境代码 |
| `dev` | 开发主分支,所有功能集成分支先合并到此分支 |
| `feat/*` | 功能开发分支,用于开发新功能 |
| `hotfix/*` | 热修复分支,用于紧急修复生产问题 |
| `release/*` | 发布分支,用于版本发布准备 |
### 分支流程规则
#### 核心规则:dev 禁止合并到 main
**重要约束:`dev` 分支** **禁止直接合并到 `main` 分支**
- `dev` 是开发分支,代码未经充分测试,不适合直接发布到生产
- 所有合并到 `main` 的代码必须通过 `release/*` 分支或直接从 `hotfix/*` 分支合并
#### 标准合并流程
```
功能开发流程:
feat/* → dev → release/* → main
热修复流程:
hotfix/* → main (紧急情况可直接合并)
hotfix/* → dev (同步修复到开发分支)
```
#### 各分支合并规则
| 从分支 | 合并到 | 是否允许 | 说明 |
|-------|-------|---------|------|
| `feat/*` | `dev` | ✅ 允许 | 功能开发完成后合并到开发分支 |
| `dev` | `main` | ❌ 禁止 | dev 禁止直接合并到 main |
| `dev` | `release/*` | ✅ 允许 | 开发分支可以合并到发布分支 |
| `release/*` | `main` | ✅ 允许 | 发布分支通过测试后合并到 main |
| `release/*` | `dev` | ✅ 允许 | 发布分支可同步回开发分支 |
| `hotfix/*` | `main` | ✅ 允许 | 热修复可直接合并到 main |
| `hotfix/*` | `dev` | ✅ 允许 | 热修复需同步到开发分支 |
| `feat/*` | `main` | ❌ 禁止 | 功能分支禁止直接合并到 main |
| `feat/*` | 其他 `feat/*` | ❌ 禁止 | 功能分支之间禁止互相合并 |
### 当前项目分支结构
```
本地分支:
- dev (开发主分支,当前工作分支)
- feat/event (事件功能分支)
- feat/stream (流功能分支)
- hotfix/event (事件热修复分支)
- main (生产环境分支)
远程分支:
- origin/main
- origin/dev
- origin/feat/event
```
### Git 操作指南
#### 创建功能分支
```bash
# 从 main 创建功能分支
git checkout main
git pull origin main
git checkout -b feat/your-feature-name
```
#### 合并功能到 dev
```bash
# 完成功能开发后,切换到 dev 分支
git checkout dev
git pull origin dev
# 合并功能分支
git merge feat/your-feature-name
# 推送 dev 分支
git push origin dev
```
#### 创建发布分支
```bash
# 从 dev 创建发布分支
git checkout dev
git pull origin dev
git checkout -b release/v1.0.0
```
#### 发布到 main
```bash
# 在 release 分支完成测试后,合并到 main
git checkout main
git pull origin main
git merge release/v1.0.0
git push origin main
# 删除发布分支
git branch -d release/v1.0.0
git push origin --delete release/v1.0.0
```
#### 热修复操作
```bash
# 从 main 创建热修复分支
git checkout main
git pull origin main
git checkout -b hotfix/issue-description
# 修复完成后,合并到 main
git checkout main
git merge hotfix/issue-description
git push origin main
# 同时合并到 dev
git checkout dev
git merge hotfix/issue-description
git push origin dev
# 删除热修复分支
git branch -d hotfix/issue-description
```
```
git add .
git commit -m "更新代码"
git push
```