当前位置:首页 > 技术文章 > 正文内容

同事git push到主分支上了,技术总监怒了

zonemu2个月前 (07-08)技术文章24

事情是这样的,同事前几天提交使用git提交代码的时候不小心提交到主分支上了,关键还提交成功了,这可是他自己开发的模块,还没测试的呢。技术总监也知道了,这下他慌乱了。最后还是技术总监给他兜底了。

为了防止以后出现git push到主分支,所以写了这篇文章记录一下。

防止 git push 到主分支上

为了防止不小心将代码 push 到主分支(如 mainmaster),可以采取以下几种方法:

1. 使用 Git 钩子(Git Hooks)

示例代码: 在项目的 .git/hooks 目录下创建一个名为 pre-push 的文件,并添加以下内容:

#!/bin/sh

# 获取要推送的分支名
branch=$(git symbolic-ref --short HEAD)

# 如果当前分支是 main 或 master,则阻止推送
if [ "$branch" = "main" ] || [ "$branch" = "master" ]; then
  echo "Error: Cannot push to $branch branch."
  exit 1
fi

然后,给该文件添加执行权限:

chmod +x .git/hooks/pre-push

这样,在执行 git push 时,如果当前分支是 mainmaster,就会触发钩子脚本,阻止推送操作。

2. 配置 Git 仓库的分支保护规则

如果你使用的是 GitHub、GitLab 等远程 Git 仓库托管服务,可以在仓库设置中配置分支保护规则,禁止直接推送代码到主分支。

以 GitHub 为例:

  1. 登录 GitHub,进入你的仓库页面。
  2. 点击仓库设置中的 "Settings" 选项卡。
  3. 在左侧菜单中选择 "Branches"。
  4. 在 "Branch protection rules" 部分,点击 "Add branch protection rule"。
  5. 输入要保护的分支名称(如 mainmaster),勾选 "Protect matching branches" 选项,然后在 "Rules" 部分勾选 "Require pull request reviews before merging" 选项。
  6. 点击 "Create" 按钮保存设置。

这样,只有通过合并请求(Pull Request)并经过审查后,才能将代码合并到主分支。

Git 分支在工作中的常用应用

1. 特性开发分支(Feature Branch)

  • 场景:开发新功能或特性时。
  • 操作流程
  • 从主分支(如 mainmaster)创建一个新的特性分支:
git checkout -b feature/new-feature
  • 在特性分支上进行开发,提交代码:
git add .
git commit -m "Add new feature"
  • 开发完成后,切换回主分支:
git checkout main
  • 将特性分支合并到主分支:
git merge feature/new-feature
  • 删除特性分支:
git branch -d feature/new-feature

2. 修复分支(Bugfix Branch)

  • 场景:修复主分支上的 Bug 时。
  • 操作流程
  • 从主分支创建一个修复分支:
git checkout -b bugfix/fix-bug
  • 在修复分支上定位并修复 Bug,提交代码:
git add .
git commit -m "Fix bug"
  • 切换回主分支:
git checkout main
  • 将修复分支合并到主分支:
git merge bugfix/fix-bug
  • 删除修复分支:
git branch -d bugfix/fix-bug

3. 发布分支(Release Branch)

  • 场景:准备发布新版本时。
  • 操作流程
  • 从主分支创建一个发布分支:
git checkout -b release/v1.0.0
  • 在发布分支上进行版本相关的调整,如更新版本号、修改文档等:
git add .
git commit -m "Prepare for release v1.0.0"
  • 发布完成后,将发布分支合并到主分支和开发分支(如 develop):
git checkout main
git merge release/v1.0.0
git checkout develop
git merge release/v1.0.0
  • 删除发布分支:
git branch -d release/v1.0.0

4. 热修复分支(Hotfix Branch)

  • 场景:在已发布版本中发现严重 Bug,需要紧急修复时。
  • 操作流程
  • 从主分支创建一个热修复分支:
git checkout -b hotfix/fix-critical-bug
  • 在热修复分支上快速修复 Bug,提交代码:
git add .
git commit -m "Fix critical bug"
  • 切换回主分支:
git checkout main
  • 将热修复分支合并到主分支:
git merge hotfix/fix-critical-bug
  • 如果有开发分支(如 develop),也要将热修复分支合并到开发分支:
git checkout develop
git merge hotfix/fix-critical-bug
  • 删除热修复分支:
git branch -d hotfix/fix-critical-bug

5. 开发分支(Develop Branch)

  • 场景:作为日常开发的主要分支,用于集成多个特性分支的代码。
  • 操作流程
  • 从主分支创建开发分支:
git checkout -b develop
  • 在开发分支上集成特性分支、修复分支等:
git merge feature/new-feature
git merge bugfix/fix-bug
  • 定期将开发分支的代码合并到主分支:
git checkout main
git merge develop

创作不易,如果这篇文章对你有用,欢迎点赞关注加评论哦

小伙伴们在工作中还遇到过其他应用场景吗,欢迎评论区留言讨论哦。

相关文章

Ubuntu 25.04发行版登场:Linux 6.14内核,带来多项技术革新

IT之家 4 月 18 日消息,科技媒体 linuxiac 昨日(4 月 17 日)发布博文,报道称代号为 Plucky Puffin 的 Ubuntu 25.04 发行版正式上线,搭载最新 Linu...

在 Spring Boot3 中操作 GitLab API 的全面指南

在当今互联网大厂的后端开发工作中,高效管理代码版本和项目协作至关重要。GitLab 作为强大的版本控制系统,其 API 为开发人员提供了丰富的操作可能性。本文将深入探讨如何在 Spring Boot3...

jenkins+gitlab 实现自动化部署(gitlab触发jenkins)

目录1、安装jdk,要记住安装路径2、安装maven,要记住安装路径3、安装git,要记住安装路径4、安装gitlab5、安装jenkins(centos7)创建安装目录下载通用war包启动和关闭Je...

Jenkins 学习笔记(jenkins要学多久)

本学习笔记参考《Jenkins 2.x实践指南》。1. Jenkins 简介#Jenkins 是一款自动化的任务执行工具。通常用于持续集成/持续交付领域。可以通过界面或Jenkinsfile告诉Jen...

html5你能把太阳系动态做出来,但是你能把月亮也做出来吗?

需要源码请评论后加前端学习群470593776课题:HTML5加原生js打造一个炫酷动态的太阳系简介:首先对于太阳系各大星球的运转关系,速度等资料,不然弄出来也是被喷的下场, 还有对于逻辑思维,算法的...

Excel中的FILTER函数详细介绍及使用示例

在Excel中处理大量数据时,经常需要根据特定条件筛选出符合条件的数据行或列。这正是Excel的FILTER函数发挥作用的地方。FILTER函数是Excel中一个非常强大的工具,它可以基于一个或多个条...