目的:限制本地仓库某一个分支提交代码,只能通过合并代码的方式更新分支代码。(注:合并代码冲突了, 这个必须在该分支提交。此时可以放开限制提交代码)

场景: 开发过程中我们可能会有开发分支和测试分支,因不确定多个需求的上线点是否一致(即使事先确定同一时间点上线也可能因为各种原因导致仅能上线部分功能),会考虑不同的需求放在不同的分支上开发,但为了方便测试,会将不同的需求放在同一分支发布到测试环境。 这个过程中我们就会在不同的开发分支和这个测试分支切换。 为防止后续测试过程中,不小心将bug修复代码写在测试分支,我们就要限制在这个测试分支的提交(本地仓库的提交)。

实现步骤:

1. 找到项目的.git目录,并找到hooks目录, 该目录下有git命令的钩子文件,如下图,  这些钩子文件可以在触发相关命令场景时被调用。

2. 修改相关钩子文件内容,并将.sample后缀去掉。 如我们本次要在提交之前判断分支名称,如果当前分支是禁止提交的分支,则要终止commit操作。

  • 先把pre-commit.sample文件名修改为pre-commit
  • 修改文件内容, 在第一行非注释代码之前添加如下内容。(注意:文件的第一行是“#!/bin/sh” 这行虽然是注释,但shell脚本中是有用的,在它之后添加以下代码即可)
# 获取当前的分支名称
branch="$(git rev-parse --abbrev-ref HEAD)"
# 判断当前分支是否为禁止提交的分支名, 如果是则给出相关提示,并终止commit
if [ "$branch" = "master" ]; thenecho "当前分支$branch不支持提交操作, You can't commit to $branch branch"exit 1
fi

3. 如上代码, 我是禁止在master分支上提交代码, 可以提交一次看是否限制住了, 下图为我的测试

4. 至此我们的目的已经达到了,限制在该分支提交代码。但在合并代码时如果出现了代码冲突我们还是要在该分支提交,此时只要修改pre-commit文件名为任意非该名称,让我们修改的文件失效即可。

5. 限制提交解除了。 忙着改bug呢,不小心真的将修复代码提交到了限制分支怎么办? 可以使用cherry-pick命令, 将该提交内容合并到你的开发分支。

git 禁止分支提交相关推荐

  1. 远程服务器如何创建分支,Git 创建分支提交远程分支详解

    搜索热词 Git 创建分支提交远程分支详解 1.创建本地分支 git branch 分支名,例如:git branch 2.0.1.20120806 注:2.0.1.20120806是分支名称,可以随 ...

  2. IntelliJ IDEA切换Git远程分支 提交代码 拉取最新代码

    前言:众所周知Git用命令提交代码比较繁琐,而且还得记住命令,那如何让我们更加方便的提交代码呢 以及获取最新内容拉到本地 还有更换你要提交到的分支呢 下面废话不多说. 目录 IDEA里切换Git分支 ...

  3. git回退分支提交代码

    某次发现提交到远程分支的代码有问题需要回退,怎么操作? 回退到对应的commit git fetch origin git merge origin/master 解决冲突,提交代码

  4. git 创建分支提交远程分支

    2019独角兽企业重金招聘Python工程师标准>>> 1,从已有的分支创建新的分支(如从master分支),创建一个dev分支 git checkout -b dev 2,创建完可 ...

  5. idea查看svn前分支提交_SVN与Git的区别,读完之后,大部分程序员都收藏了...

    SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!这是两者之间最核心的区别. 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容易, ...

  6. 通过Android studio使用git创建本地分支提交远程仓库以及如何查看切换分支

    我们有时候对命令不熟悉的同学例如我,那么这个AS自带的这个创建分支功能就对我们必不可少了. 首先我们看下远程仓库只有主支master,没有任何分支的信息如下图: 1.首先我们打开AS,点击右下角的gi ...

  7. git 多人在同一分支上迭代开发时,如何保证分支提交历史保持线性

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  8. 11、git查看往日提交以及删除分支ID命令

    git查看往日提交以及删除分支ID  git reflog --date=iso

  9. 提交工程到git的分支上

    git提交工程到分支上 将本地仓库的内容提交到远程仓库分支上,本示例在window下测试使用,Linux系统大同小异. 1. 初始化本地仓库 git init 2. 将本地内容添加到git git a ...

最新文章

  1. 丽水数据可视化设计价格_网站建设之B端交互设计——数据可视化图表
  2. 为NLP从业者/研究生/研究员专门定制的全网唯一高端NLP训练营
  3. Zookeeper源码解读
  4. Django MTV模型思想
  5. python 内部函数,以及lambda,filter,map等内置函数
  6. getrealdays oracle_oracle 日期函数介绍
  7. python运用范围_如何在python中使用某个范围对数字列表进行分组?
  8. 前端面试题--重要基础知识回顾(一)
  9. django makemigrtions时出现no changes detected 解决方式
  10. 融会贯通——最常用的面向对象设计原则“合成复用原则”
  11. python串口实时读取数据画图_python串口绘图
  12. 高级函数技巧-函数柯里化
  13. Java中的System.getProperty()设置参数的方法
  14. ORACLE ORA-00600 [17059][]错误的排除
  15. 图像函数 imagecreatetruecolor()和imagecreate()的异同点
  16. 带型带秀专题之 Lazy Load (一)
  17. Python 安装openGL教程
  18. Python数据可视化,Pyecharts库,国家卫健委疫情风险等级数据可视化
  19. 笔记——衡量回归算法的标准最好的评价指标R Square
  20. linux清除回收站权限错误,在Ubuntu 14.04 中修复无法清空回收站的问题

热门文章

  1. Weka中分类器指标的说明
  2. Cesium中加载地形影像切片,以及3dtiles和shp及kml方法
  3. pstack无法查看进程堆栈“Could not attach to target”问题
  4. 5GNR漫谈14:TM一致性测试
  5. MATLAB与C++接口(上)(看这一篇足够了!!!)
  6. 在win10安装Charles和证书
  7. 使用Android Studio做一个简易进制转换计算器
  8. STM32要按复位键才能下载问题解决
  9. 【26天高效学习Java编程】Day22:Java中的属性集-缓冲流-转换流-序列化流详解
  10. UITableView上下滚动卡顿(获取网络数据,下载图片之后)