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

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

zonemu6小时前技术文章1

事情是这样的,同事前几天提交使用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

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

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

相关文章

linux发行版-openSUSE Agama 15安装程序发布:带来多项可用性升级

openSUSE旗下仍在开发中的全新Linux安装工具Agama,于近日推出v15版本,带来了界面增强、实用新功能等一系列改进,为用户带来更顺畅的系统安装体验!界面优化:细节之处见用心新版本在本地化设...

细数5款国外热门Linux发行版(linux发行版排名网站)

Linux系统已经与我们的生活息息相关,当你用Android手机浏览这篇文章时,你就已经在使用Linux系统。当然作为编程开发最热门的系统,他还有很多专注于开发使用的版本。Fedora热门入门推荐,一...

Garuda Linux:现代化、注重性能与美观的Linux发行版

什么是 Garuda Linux?Garuda Linux 是一个基于 Arch Linux 的现代化、注重性能与美观的桌面操作系统。它面向对性能有较高要求的用户,尤其受到 Linux 爱好者、游戏玩...

「图解」父子组件通过 props 进行数据交互的方法

1.组件化开发,经常有这样的一个场景,就是父组件通过 Ajax 获取数据,传递给子组件,如何通过 props 进行数据交互来实现,便是本图解的重点。2.代码的结构3.具体代码 ①在父组件 data 中...

【Vue3 基础】05.组件化(组件使用vuex)

这是 Vue3 + Vite + Pinia +TS + Element-Plus 实战系列文档。最近比较忙没什么时间写文章,争取早日把这个系列完结吧~生命周期和模板引用在本章之前,我们通过响应式 a...

Vue3开发极简入门(16):祖孙组件间通信之provide&inject

前文说了Vue的组件间关系,有父子、爷孙、其他关系。例如之前的Father、Son是父子关系,App与Son就是爷孙关系。而props的Son,与emits的Son,就是其他关系。前文的props是父...