禁止删除 git 中的 master 分支

2023-12-23

我正在尝试设置一个 git hook 来禁止任何人删除master, alpha, and beta我们存储库的分支。有人能帮忙吗?我从来没有做过 git hook,所以我不想在没有一点帮助的情况下尝试自己开发自己的 git hook。


直接用一个pre-receive钩。假设您使用的是裸露的中央存储库,请将以下代码放入your-repo.git/hooks/pre-receive,并且不要忘记chmod +x your-repo.git/hooks/pre-receive.

#! /usr/bin/perl

# create: 00000... 51b8d... refs/heads/topic/gbacon
# delete: 51b8d... 00000... refs/heads/topic/gbacon
# update: 51b8d... d5e14... refs/heads/topic/gbacon

my $errors = 0;

while (<>) {
  chomp;

  next
    unless m[ ^
              ([0-9a-f]+)       # old SHA-1
              \s+
              ([0-9a-f]+)       # new SHA-1
              \s+
              refs/heads/(\S+)  # ref
              \s*
              $
            ]x;

  my($old,$new,$ref) = ($1,$2,$3);

  next unless $ref =~ /^(master|alpha|beta)$/;

  die "$0: deleting $ref not permitted!\n"
    if $new =~ /^0+$/;
}

exit $errors == 0 ? 0 : 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁止删除 git 中的 master 分支 的相关文章

  • 如何提交 git 标签?

    我已成功对中央 git 存储库进行 提交和推送更改 我现在意识到我想标记所有文件的当前版本 所以我这样做 git tag a 0 5 这样就成功了 但现在我尝试git push我被告知没有什么可承诺的 如何将新标签推送到中央存储库 注意gi
  • GIT Pull 删除了我的提交

    在 git pull 之后 我已经完成了 git Reset 以在合并之前撤消与提交 ID 的合并 不知何故 我的整个提交都消失了 而且我也无法在历史记录中看到该提交 但我有提交 id 在 git show 命令上我可以看到我的更改 我如何
  • 在 GitHub 上看不到“在 Xcode 中打开”按钮

    正如在GitHub 和 Xcode 9 中的新源代码管理工作流程 https developer apple com videos play wwdc2017 405 time 204Apple 视频会话 我们可以直接从 Xcode 克隆项
  • 仅当除 master 之外的所有分支都有推送的 TAG 时,Gitlab 才会触发 Pipeline

    我的 YAML 文件必须如何配置 以便仅在推送标签时触发一种情况 作业 构建 的管道 该标签可能位于除 master 之外的所有分支中 对于主案例 我有一个单独的工作 build master yaml 文件 问题 如果主分支获得标签 管道
  • Git 将新的本地分支推送到远程,无需指定名称

    当针对特定的跟踪问题进行补丁修复时 我们的工作流程如下所示 1 git checkout patch git pull upstream patch make sure we re up to date 2 git checkout b i
  • 为什么 iTerm2 中不显示 git 颜色

    所以我有我的 gitconfig 设置来处理颜色 在终端中它工作得很好 看起来也不错 然而 在 iTerm2 中 除非我为 git 设置反向属性 否则我的 gitconfig 根本不会显示颜色 然后它们就出现了 但是谁喜欢相反的颜色呢 为什
  • 如何给 Git 控制台着色?

    我最近看到gitWindows 中的控制台是彩色的 例如绿色表示添加 红色表示删除等 我如何为我的颜色上色git这样的控制台 为了安装它 我使用了以下命令 sudo apt get install git core As noted htt
  • File::Find 是否有更干净的方法来返回所需文件的列表?

    我找到了背后的设计选择File Find find https metacpan org module File 3a 3aFind有点令人惊讶 我遇到过的例子都表明find用在 void 上下文中 The 文档 https metacpa
  • 如何在 Perl 中获取用户输入而不等待输入?

    我正在尝试用 Perl 制作一个交互式 shell 脚本 我能找到的唯一用户输入如下 name
  • Git 从不同的存储库中提取分支

    我当前的存储库中只有几个文件 我想合并来自不同存储库的远程分支 从中拉出并合并一个分支github com username code git 分支装载机 然后从中拉出并合并一个分支github com username code git
  • Visual Studio 代码中的“Git:gpg 未能签署数据”

    全新安装 Linux 后 我尝试设置我的环境 并且不断收到Git gpg failed to sign the data在本地提交更改时出错 我使用的是 Visual Studio Code 专有版本 而不是开源版本 gitconfig u
  • git checkout 裸露,并在接收后包含子模块

    如何在包含子模块的接收后挂钩中检出服务器上的裸存储库 我目前将其作为接收后挂钩 bin bash http blog ekynoxe com 2011 10 22 git post receive for multiple remote b
  • 空提交的 Git 补丁

    我创建一个空提交 git commit allow empty m something important 有时它很有用 例如协调 2 个 或更多 不同的 git 树 然而 当我 git format patch 空提交被省略 因为它们不与
  • 如何在git中定义ESC字符?

    我想在 git 输出中使用着色 例如 git log decorate color 当我发出这个命令时 我得到的输出看起来像ESC 1 32m where ESC是反色的 在我看来 这是一个有效的转义序列 除了 033必须发送而不是字符E
  • 更快的“git rebase --preserve-merges”方法

    我通过创建一系列功能分支来使用 git 并在完成后将它们合并到 mastergit merge no ff 这会创建空的合并提交 可用于识别先前功能分支的起点和终点 为了处理多个并发分支 甚至嵌套分支 我使用 rebase 我从不合并回去
  • 有没有办法显示 Visual Studio 执行的 Git 命令? [复制]

    这个问题在这里已经有答案了 在 Visual Studio Code 中 有一个 显示 Git 输出 菜单项 显示最近运行的 Git 命令 有关其外观的示例 请参阅3 35 在这个视频中 https code visualstudio co
  • git 列出所有可用命令

    有没有命令可以显示 GIT 中所有可用命令的列表 有git help但它显示 usage git version exec path
  • 使用可通过 FTP 访问的 Web 服务器进行 Git 托管?

    我运行一个 糟糕的 网站 托管在第三方网络服务器上 我可以通过 FTP 访问我的 Web 服务器 据推测 Git 本身具有通过 FTP 推送 拉取的能力 由于我的 Web 服务器已经可以随处访问 我希望将其用作集中式 Git 存储库 我可以
  • 如何引用 Perl 子例程?

    我在弄清楚如何引用外部模块文件中的子例程时遇到了一些麻烦 现在 我正在这样做 外部文件 package settingsGeneral sub printScreen print 0 Main use settingsGeneral my
  • Mac 操作系统屏幕上的 Git 自动补全

    我在 mac 上使用 git 并配置了自动完成功能 如下所示http www codethatmatters com 2010 01 git autocomplete in mac os x http www codethatmatters

随机推荐

  • 我的滑块无法在自动模式下工作

    我创建了简单的滑块手风琴 这是我的代码 唯一的问题是它适用于自动模式 并且适用 我的代码
  • *ng如果不工作

    我在用角 2 RC 4和 ngIf 在这里不起作用是视图的代码 View div class navbar navbar inverse navbar fixed top div class container div class navb
  • 两个 Azure 移动服务(.NET 后端)共享同一数据库

    我有两个共享同一个 Azure 数据库的 Azure 移动服务 NET 后端 假设服务 X 和 Y 该数据库由服务 X 首次运行时 创建 并创建了模式名称 X 的表 TA 然后我运行服务 Y 它在同一数据库中创建了相同的表 TA 和 TB
  • 如何在 iPhone sdk 中序列化一个简单的对象?

    我有一本对象字典 它们都是应该可序列化的 POCO 对象 我应该采用什么技术将它们写入磁盘 我正在寻找最简单的选项来编写一些列表来保存状态 我想我有3个选择 plist 文件 然而 这似乎仅限于仅存储预定义的对象 字符串 数字等 而不是对象
  • 在 Eclipse 中哪里可以看到项目的构建进度?

    Question 我正在使用 Eclipse for Java EE Mars 2 当我构建项目时 我在Console window 在哪里可以看到项目构建进度和错误 Window gt Show View gt Progress 为了进步
  • 通过 AJAX 请求执行操作 DNN MVC

    我的DNN MVC开发历程中还出现了另一个问题 我想知道这是否是我犯了一个错误的错误 缺失功能 下面我将尝试解释这个问题 我想要实现什么 我想通过调用 AJAX post 在控制器中执行操作 到目前为止它有效 但是 当我尝试将一些变量返回到
  • 使用 PyAV 将视频直接读入 Numpy(无迭代)

    是否可以使用 PyAV 将视频直接读入 3D Numpy 目前 我正在循环每一帧 i 0 container av open myvideo avi for frame in container decode video 0 if i 0
  • Jupyter 笔记本中的阻塞式交互式绘图

    我正在尝试从 Jupyter 笔记本中获得一个交互式的 阻塞的 matplotlib 窗口 也就是说 我希望 matplotlib 窗口出现并在笔记本中执行暂停 直到它关闭 但我的代码的各种看似合理的排列似乎不起作用 以下产生预期结果 ma
  • 在模板函数中包含不变假设

    考虑一个典型的有限差分应用 assuming T size gt 2 void process T double T0 double T const int T size bool periodic for int i 0 i lt T s
  • 词干、词形与频率的词形还原(过滤和分析)

    好的 我正在尝试添加一个word tag 但我不确定这是否是正确的方法 抱歉我是新手 from nltk corpus import wordnet as wn Count the words word count Counter word
  • HttpURLConnection 被锁定

    我有一个在 tomcat 下运行的线程 它创建一个 HttpUrlConnection 并通过 BufferedInputStream 读取它 获取某些网址的数据后 它会停止 我得到了进程的 jstack 其中显示 HttpUrlConne
  • 我们如何使用 Python seaborn relplot 在所有子图上绘制垂直线?

    用于创建绘图的 Python 代码如下 这将根据以下内容创建子图 variable s sb relplot x timestamp y value hue variable row variable kind line facet kws
  • 使用 PIL 在图片上叠加文本

    我只是想在图片上写一些文字 可能有一些简单的效果 如阴影 我怎样才能用 PIL 做到这一点 首先安装Python图像库 pip install Pillow 注意 您可能需要更改字体文件的路径font fname import numpy
  • Python 中的似然比测试

    我在 Python 2 7 中计算似然比检验时遇到问题 我有两个模型和相应的似然值 我相信比较模型 L2 是否优于模型 L1 如果模型密切相关 的规则是查看 2 log L2 L1 然后我想找到对应于 2 log L2 L1 的 p 值 并
  • 在 Internet Explorer 10 中将文本保存到本地文件中

    我需要能够将字符串保存到本地文件中 基于中的代码here http thiscouldbebetter wordpress com 2012 12 18 loading editing and saving a text file in h
  • 当我确定我的函数已定义时,为什么我会在错误控制台上看到“函数未定义”?

    我使用的代码应该根据单选按钮选择更改表单的 操作 属性 目前不起作用 我正在尝试找出原因 根据我的 Firefox 错误控制台 函数 submitForm 未定义 但我确信它已定义 有人可以帮忙吗 代码如下 头部内部 q1 指单选按钮的名称
  • PHP/MYSQLI:PHP 中 mysqli_query 失败

    首先 我是 mysql i 语言的菜鸟 只知道 PHP 的基础知识 注意 我不管理或拥有 无权访问当前托管网页的服务器 但是我可以访问 phpMyAdmin 页面 也就是说 我有一个网页 我正在上面尝试一些东西 现在我正在尝试创建一个链接到
  • 更改 ggplot2 中条带文本背景的高度无法按预期工作

    Load libraries library ggplot2 library gtable Build plot d lt ggplot mtcars aes x gear geom bar aes y gear stat identity
  • 如何在测试查找期间将 MavenProject 注入到 mojo 中?

    这是我的测试 maven plugin testing harness 3 3 0 junit 5 6 2 import java io File import org apache maven plugin testing Abstrac
  • 禁止删除 git 中的 master 分支

    我正在尝试设置一个 git hook 来禁止任何人删除master alpha and beta我们存储库的分支 有人能帮忙吗 我从来没有做过 git hook 所以我不想在没有一点帮助的情况下尝试自己开发自己的 git hook 直接用一