Gitea撤销合并请求开发规范

Gitea撤销合并请求开发规范

1. 规范适用场景

本规范适用于Gitea远程仓库中,feature分支通过「合并请求(MR/PR)」经审核后合并至develop分支,后续因需求变更等原因,需彻底撤销该次合并的场景。

核心前提:develop分支为受保护分支,禁止本地直接推送、强制回滚及未经审核的直接修改,合并操作仅可通过Gitea网页端合并请求完成。

2. 核心原则

  • 合规性:严格遵循受保护分支规则,不绕过审核流程、不破坏分支保护机制;

  • 安全性:不使用强制回滚、强行覆盖等危险操作,避免引发团队代码冲突、历史丢失等问题。

  • 可追溯性:全程保留Git提交历史,确保所有操作可审计、可回溯,不删除或覆盖原有提交记录;

3. 标准操作流程(必遵循)

3.1 新建revert分支(关键步骤)

通过Gitea网页端操作,从develop分支创建专门的撤销分支,分支命名规范为:revert-任务编号-任务说明(例:revert-T20260101001-新增用户登录功能)。

创建完成后,将该revert分支同步至本地,并切换至该分支(本地操作:git checkout 分支名)。

3.2 获取合并提交的SHA-1校验和

通过Gitea网页端查找目标合并提交,步骤如下:

  1. 进入对应仓库,切换至develop分支;

  2. 点击「提交」选项,查看develop分支的提交历史;

  3. 找到对应合并请求生成的合并提交(提交信息通常以「Merge pull request ...」开头);

  4. 复制该合并提交的SHA-1校验和(一串由字母和数字组成的字符串,例:ca82a6dff817ec66f44342007202690a93763949)。

3.3 执行合并撤销命令

在本地revert分支下,执行以下命令撤销合并(需替换对应校验和):

bash 复制代码
git revert -m 1 合并提交的SHA-1校验和

关键说明:

  • -m 1 是必填参数,用于指定撤销合并至develop分支的改动,告知Git回滚至合并前的develop分支状态;

  • 该命令会自动生成一个新的撤销提交,不修改原有提交历史,确保可追溯。

3.4 推送revert分支至远程仓库

本地撤销操作完成后,将revert分支推送至Gitea远程仓库,命令如下:

bash 复制代码
git push origin revert-任务编号-任务说明

3.5 发起新的合并请求(审核流程)

通过Gitea网页端发起新的合并请求,完成撤销操作的最终审核,步骤如下:

  1. 进入仓库,点击「新建合并请求」;

  2. 配置合并请求参数:

    1. 源分支:选择创建的revert分支(revert-任务编号-任务说明);

    2. 目标分支:选择develop分支;

    3. 合并请求标题规范:v<版本号> -任务编号-任务说明(撤销合并请求)。例:v1.0.0-T20260101001-新增用户登录功能(撤销合并请求);

  3. 提交合并请求,等待团队审核,审核通过后完成合并。

4. 操作效果验证

合并完成后,需确认以下效果,确保撤销操作合规有效:

  • develop分支代码完全恢复至该次合并前的状态;

  • Git提交历史完整保留,包含原合并提交、撤销提交及新的合并请求记录;

  • 未违反develop分支保护规则,所有操作均经过审核流程。

5. 禁止操作(严禁违反)

以下操作会破坏Git历史、引发代码冲突或违反分支保护规则,严禁执行:

  • 使用git reset --hard命令回滚本地develop分支后,强制推送到远程develop分支;

  • 直接通过网页端或本地命令修改远程develop分支的代码及提交记录;

  • 删除原有合并提交后,强行推送覆盖远程develop分支;

  • 不创建revert分支,直接在develop分支本地操作后尝试推送。

6. 关键注意事项

  • 撤销合并仅针对「合并请求生成的合并提交」,必须使用git revert -m 1命令,单独使用git revert会报错(因合并提交有两个父提交,Git无法识别回滚方向);

  • 若撤销后需重新开发该功能,需从develop分支(撤销后状态)重新创建feature分支,避免复用原有feature分支引发冲突;

  • 所有操作需同步告知团队成员,确保团队代码版本一致,避免因本地分支未同步导致冲突。

7. 关键技术说明

7.1 git revert命令区别

命令格式 适用场景 是否需加-m 1 本规范适配性
git revert <普通提交的SHA-1校验和> 撤销单条普通代码提交 ❌ 不适用
git revert -m 1 <合并提交的SHA-1校验和> 撤销合并请求生成的合并提交 是(必须) ✅ 强制使用

7.2 合并提交特性

合并请求生成的合并提交包含两个父提交:

  • 父1:develop分支合并前的最后一次提交;

  • 父2:feature分支的最终提交;

-m 1 核心作用是指定Git以父1为基准,撤销合并带来的所有改动。

相关推荐
嘎嘎NULL1 个月前
Gitea配置邮箱
运维·服务器·gitea
嘎嘎NULL1 个月前
Gitea禁止注册和Gitea禁止未登录用户探索仓库
gitea
嘎嘎NULL1 个月前
Gitea上传文件限制 Dropzone upload error: You can not upload any more files.
gitea
Hvitur1 个月前
Gitea 版本控制服务端
gitea
猫头虎2 个月前
Gitea 服务器搭建:如何在公司服务器搭建 Gitea 环境实现代码仓库私有化托管
运维·服务器·git·github·ai编程·gitea·gitcode
路由侠内网穿透.2 个月前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
吹牛不交税2 个月前
gitea安装windows并实现CICD持续集成部署
ci/cd·gitea
不像程序员的程序媛2 个月前
gitea基本操作
gitea
阿里巴巴P8资深技术专家2 个月前
Docker一站式部署:RustFS、GoFastDFS、Gitea与PostgreSQL实战指南
docker·postgresql·gitea