branch-names

branch-names

GitHub Action轻松获取Git分支和标签名

branch-names是一个GitHub Action,用于获取当前Git分支或标签名,无需'/ref/*'前缀。它可检测默认分支、PR分支和标签,支持所有有效的Git分支名。该Action提供多个输出变量,方便在工作流中使用分支信息,兼容push、pull_request等GitHub事件。这个Action简化了Git分支和标签名的获取过程,使开发者能够更方便地处理分支相关的自动化任务。

GitHub Actions分支名称工作流CI/CD自动化Github开源项目

分支名称

Ubuntu Mac OS Windows 使用此操作的公共工作流程。

Codacy徽章 CI 更新发布版本。

<!-- 所有贡献者徽章开始 - 请勿删除或修改此部分 -->

所有贡献者

<!-- 所有贡献者徽章结束 -->

获取不带/ref/*前缀的分支或标签名称。

目录

特性

  • 获取不带任何前缀的当前分支名称。(例如:'refs/heads/main' -> 'main'
  • 获取当前标签,可选择去除前缀(例如:v0.0.1 -> v -> 0.0.1
  • 检测由非默认分支触发的操作
  • 检测由默认分支触发的操作
  • 支持所有有效的git分支名称

使用方法

... steps: - name: 获取分支名称 id: branch-names uses: tj-actions/branch-names@v8 - name: 在默认分支上运行 if: steps.branch-names.outputs.is_default == 'true' run: | echo "在默认分支上运行: ${{ steps.branch-names.outputs.current_branch }}" # 输出: "在默认分支上运行: main" - name: 在拉取请求分支上运行 if: steps.branch-names.outputs.is_default == 'false' run: | echo "在PR上运行: ${{ steps.branch-names.outputs.current_branch }}" # 输出: "在PR上运行: feature/test" - name: 在拉取请求分支上运行 if: steps.branch-names.outputs.is_default == 'false' run: | echo "基础分支: ${{ steps.branch-names.outputs.base_ref_branch }}" # 输出: "基础分支: main" - name: 在任何事件上运行 run: | echo "默认分支: ${{ steps.branch-names.outputs.default_branch }}" # 输出: "默认分支: main"

如果您愿意慷慨一些并想表示额外的感谢:

请为这个项目点个 :star:

给我买杯咖啡

输入

<!-- 自动文档输入开始 - 请勿删除或修改此部分 -->
- uses: tj-actions/branch-names@v8 id: branch-names with: # 应该从标签中去除的前缀 # 例如 `v` -> 对于标签 # `v0.0.1` -> 返回 `0.0.1` # 类型: 字符串 strip_tag_prefix: ''
<!-- 自动文档输入结束 -->

输出

<!-- 自动文档输出开始 - 请勿删除或修改此部分 -->
输出类型描述
<a name="output_base_ref_branch"></a>base_ref_branch字符串拉取请求或标签的目标分支,<br>例如 main
<a name="output_current_branch"></a>current_branch字符串无论事件类型如何的当前分支名称,<br>例如 main, feature/test
<a name="output_default_branch"></a>default_branch字符串默认分支名称,例如 <br>mainmaster
<a name="output_head_ref_branch"></a>head_ref_branch字符串拉取请求的源分支,<br>例如 feature/test
<a name="output_is_default"></a>is_default字符串如果当前分支是默认分支则返回<br>"true",否则返回 "false".
<a name="output_is_tag"></a>is_tag字符串如果当前分支是标签则返回<br>"true",否则返回 "false".
<a name="output_ref_branch"></a>ref_branch字符串触发工作流运行的分支.<br>例如 1/merge, main
<a name="output_tag"></a>tag字符串触发工作流运行的标签.<br>例如 v0.0.1, 0.0.1
<!-- AUTO-DOC-OUTPUT:END -->

事件

push*

on: push: branches: - main ... steps: - name: 获取分支名称 id: branch-names uses: tj-actions/branch-names@v8 - name: 当前分支名称 run: | echo "${{ steps.branch-names.outputs.current_branch }}" # 输出: "main" 触发推送事件的分支。 - name: 在默认分支上运行。 if: steps.branch-names.outputs.is_default == 'true' run: | echo "在默认分支上运行: ${{ steps.branch-names.outputs.current_branch }}" # 输出: "在默认分支上运行: main"。 - name: 在默认分支上运行(即非基于标签的分支)。 if: steps.branch-names.outputs.is_tag == 'false' && steps.branch-names.outputs.is_default == 'true' run: | echo "在分支上运行: ${{ steps.branch-names.outputs.current_branch }}" # 输出: "在分支上运行: main"。 - name: 获取Ref分支名称 run: | echo "${{ steps.branch-names.outputs.ref_branch }}" # 输出: "main" - name: 默认分支名称 run: | echo "${{ steps.branch-names.outputs.default_branch }}" # 输出: "main" 默认分支。

pull_request*

on: pull_request: branches: - main ... steps: - name: 获取分支名称 id: branch-names uses: tj-actions/branch-names@v8 - name: 当前分支名称 run: | echo "${{ steps.branch-names.outputs.current_branch }}" # 输出: "feature/test" 当前PR分支。 - name: 在非基于标签的分支和PR分支上运行。 if: steps.branch-names.outputs.is_default == 'false' run: | echo "在分支上运行: ${{ steps.branch-names.outputs.current_branch }}" # 输出: "在分支上运行: feature/test"。 - name: 在拉取请求上运行(即非基于标签的分支)。 if: steps.branch-names.outputs.is_tag == 'false' && steps.branch-names.outputs.is_default == 'false' run: | echo "在分支上运行: ${{ steps.branch-names.outputs.current_branch }}" # 输出: "在分支上运行: feature/test"。 - name: 获取Ref分支名称 run: | echo "${{ steps.branch-names.outputs.ref_branch }}" # 输出: "1/merge" - name: 获取Head Ref分支名称(即当前拉取请求分支) run: | echo "${{ steps.branch-names.outputs.head_ref_branch }}" # 输出: "feature/test" 当前PR分支。 - name: 获取Base Ref分支名称(即拉取请求的目标) run: | echo "${{ steps.branch-names.outputs.base_ref_branch }}" # 输出: "main"。 - name: 默认分支名称 run: | echo "${{ steps.branch-names.outputs.default_branch }}" # 输出: "main" 默认分支。

tag*

on: push: tags: - '*' ... steps: - name: 获取分支名称 id: branch-names uses: tj-actions/branch-names@v8 with: strip_tag_prefix: v # 可选择从标签中去除开头的 `v`。 - name: 在标签分支上运行。 if: steps.branch-names.outputs.is_tag == 'true' run: | echo "运行于: ${{ steps.branch-names.outputs.tag }}" # 输出: "运行于: 0.0.1"。 - name: 获取当前标签 if: steps.branch-names.outputs.is_tag == 'true' # 替换: startsWith(github.ref, 'refs/tags/') run: | echo "${{ steps.branch-names.outputs.tag }}" # 输出: "0.0.1"

其他支持的事件

查看 .github/workflows/test.yml 获取更多示例。

actions/checkout 的可能用法

on: pull_request: branches: - develop jobs: test: runs-on: ubuntu-latest steps: - name: 获取分支名称。 id: branch-names uses: tj-actions/branch-names@v8 - uses: actions/checkout@v4 with: ref: ${{ steps.branch-names.outputs.head_ref_branch }}

致谢

本包是使用 Cookiecutter 创建的。

报告错误

https://github.com/tj-actions/branch-names/issues 报告错误。

如果您要报告一个错误,请包括:

  • 您的操作系统名称和版本。
  • 任何可能有助于排除故障的工作流程详细信息。
  • 重现该错误的详细步骤。

贡献者 ✨

感谢这些出色的人(表情符号键):

<!-- ALL-CONTRIBUTORS-LIST:START - 不要删除或修改此部分 --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="14.28%"><a href="https://github.com/loarca"><img src="https://avatars.githubusercontent.com/u/22898638?v=4?s=100" width="100px;" alt="Alejandro Loarca"/><br /><sub><b>Alejandro Loarca</b></sub></a><br /><a href="https://github.com/tj-actions/branch-names/commits?author=loarca" title="代码">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://ianwoodard.me"><img src="https://avatars.githubusercontent.com/u/17186604?v=4?s=100" width="100px;" alt="Ian Woodard"/><br /><sub><b>Ian Woodard</b></sub></a><br /><a href="https://github.com/tj-actions/branch-names/commits?author=IanWoodard" title="文档">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://home.boidol.dev/"><img src="https://avatars.githubusercontent.com/u/652404?v=4?s=100" width="100px;" alt="Raphael Boidol"/><br /><sub><b>Raphael Boidol</b></sub></a><br /><a href="https://github.com/tj-actions/branch-names/commits?author=boidolr" title="文档">📖</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END -->

本项目遵循all-contributors规范。欢迎任何形式的贡献!

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多