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

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

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

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

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

相关文章

宽带客户收费管理系统--维修版(宽带售后服务)

宽带客户收费管理系统--维修版headerfooter《宽带客户收费管理系统——维修版》是一款适合宽带运营商使用的管理系统。软件主要包括以下功能:1.主要功能包括用户开户、收费录入、工单登记、故障处理...

一套智能停车场收费管理系统设计方案,拓扑图VISIO格式

大家好,我是薛哥。最近VIP会员群的读者咨询停车场管理系统的规划设计方案,今天分享一个模板素材,主要里面的拓扑图可以编辑的,VISIO格式,建议收藏备用。此套完整的Word方案,VIP会员下载!智能停...

Excel VBA 主界面/一步一步带你设计【收费管理系统】02

本文于2023年5月14日首发于本人同名公众号,更多文章案例请关注微信公众号:Excel活学活用!☆本期内容概要☆用户窗体设置:主界面、主页设计上期我们分享了EXCEL读取ACCESS数据库表,实现系...

适合在任何地方使用的 Linux:15 个小型 Linux 发行版

如果你有一台老旧的 PC 或超小型设备,这些 Linux 发行版中的一个应该适合你。来源:https://linux.cn/article-12281-1.html作者:David Gewirtz译者...

7 款最佳 Linux 桌面发行版,颜值天花板

一、elementary OS二、Deepin三、Pop!_OS四、Manjaro Linux五、KDE Neon六、Zorin OS七、Nitrux OS想必大家都知道三大常用操作系统:Linux、...

Ubuntu 24.10发行版登场:Linux 6.11内核、GNOME 47桌面环境

IT之家 10 月 11 日消息,Canonical 昨日发布新闻稿,正式推出代号为 Oracular Oriole 的 Ubuntu 24.10 发行版。新版在内核方面升级到最新 6.11 版本,并...