# 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 ```