写在最前面的使用方式

  1. 查看 所有分支的备注
    git branch.notes
  2. 创建分支并为分支添加备注
    git co -b feat/oauth -m '第三方用户登录'
  3. 对分支描述的添加与清除
    添加 git branch.note --add 清除 git branch.note --clear

📝 为 Git branch 命令添加描述功能

🧭 背景说明

目前,Git 本身并没有内置的分支描述功能,开发者通常通过分支名来了解分支的目的,但这种方式不够直观。为了提升分支管理的清晰度和可读性,我在项目中引入了一个名为 .gitbranch 的本地文件,用于记录每个 Git 分支的描述信息。这个文件不会影响 Git 的版本控制功能,仅作为开发人员在本地维护分支说明的工具。

通过添加 git branch.note 命令,可以更方便地为当前分支添加描述,提高团队协作效率与代码可维护性。该命令对团队成员完全透明、易于使用,是对外展示的入口。


📌 一、用户应该如何配置

1. 创建 .gitbranch 文件

在项目根目录下创建一个名为 .gitbranch 的普通文本文件,用于存储各分支的描述信息:

touch .gitbranch

或者你可以直接写入初始内容:

echo "| main | 主分支,用于生产环境代码" > .gitbranch

📌 推荐将 .gitbranch 写入到 .gitignore 中 echo .gitbranch >> .gitignore , 要不然切换分支时它也会跟随变更。

2. 配置 Git 别名

将以下配置添加到你的 .gitconfig 文件中,使 git branch.note 命令正常工作:

⚠️ 注意:以下命令为 Mac OS 系统的配置文件。

[alias "branch"]clear = "!f() { if test -f .gitbranch ; then grep -v $(git rev-parse --abbrev-ref HEAD) .gitbranch > .gitbranch.tmp && mv .gitbranch.tmp .gitbranch; fi;}; f"add =  "!f() { if [[ -n $1 ]]; then echo \"| $(git rev-parse --abbrev-ref HEAD) | $1 |\" >> .gitbranch ; fi; }; f"show = "!f() { if test -f .gitbranch ; then grep --no-filename $(git rev-parse --abbrev-ref HEAD) .gitbranch | awk -F '|' '{print $3}'; else echo 'The file `.gitbranch` does not exist'; fi; }; f"note =  "!f() { if [[ -n $1 && $1 = '--add' && -n $2 ]]; then git branch.add $2; elif [[ -n $1 && $1 = '--clear' ]]; then git branch.clear; else git branch.show; fi; }; f"notes = "!f() { git branch --list | tr -d ' *' | while read -r name; do if [[ -n $(grep ${name} .gitbranch) ]]; then grep ${name} .gitbranch| sed 's/^|[[:space:]]//g' | awk -F '|' '{print \"\\033[32m\" $1 $2 \"\\033[0m\" }'; else echo  $name; fi; done; }; f"

✅ 所有分支描述操作均通过内部命令(如 branch.addbranch.show)实现,因此你只需配置 branch.note 命令即可。


📌 二、介绍一下 git branch.note 应该如何使用

1. 添加分支描述

使用如下命令为当前分支添加描述(支持中文):

git branch.note --add "这是当前分支的说明"

✅ 示例:

git branch.note --add "用于开发用户登录模块,包含前端和后端接口"

💡 运行后,git branch.note 会自动将描述写入 .gitbranch 文件,格式如下:

| <branch-name> | <description> |

例如:执行 git branch.note

用于开发用户登录模块,包含前端和后端接口

2. 查看当前分支的描述

直接使用以下命令查看当前分支的说明:

git branch.note

✅ 示例:

git branch.note

在这里插入图片描述

📝 此命令会自动读取 .gitbranch 文件中的内容,并输出当前分支的描述。如果没有设置描述,则会显示空白。

3. 清空当前分支的描述

直接使用以下命令清空当前分支的说明:

git branch.note --clear

当前分支的描述将会被清空 ⚠️ 请谨慎操作

4. 查看所有分支的描述

直接使用以下命令查看当前分支的说明:

git branch.notes

列出所有分支并展示出分支的描述
在这里插入图片描述

eat/cus-register
feat/data-statistics
feat/oAuth
feat/package-switching 这是项目的描述
feat/replace-get-api-list
feat/stat-maas
feat/super-group
feat/test-template
fix/blog
fix/config-base
fix/huoshan-register
fix/optimization

快速创建分支 并 添加分支描述

文件名 git-co

请将 git-co 文件添加到 $PATH 中;

#!/bin/bash# git-co - 自定义 Git 插件,用于处理带 -m 参数的 checkout 命令
# 使用方法:git co [checkout 参数] -m [注释内容]# 初始化变量
note_message=""
checkout_args=()
found_m=false# 解析命令行参数
for arg in "$@"; doif [[ $found_m == true ]]; thennote_message="$arg"found_m=falseelif [[ $arg == "-m" ]]; thenfound_m=trueelsecheckout_args+=("$arg")fi
done# 检查是否找到了 -m 参数但没有提供值
if [[ $found_m == true ]]; thenecho "错误:-m 选项需要一个参数值。" >&2exit 1
fi# 执行 git checkout 命令
git checkout "${checkout_args[@]}"
checkout_status=$?# 如果 checkout 成功且有注释内容,则添加分支注释
if [[ $checkout_status -eq 0 && -n "$note_message" ]]; then# 获取当前分支名current_branch=$(git rev-parse --abbrev-ref HEAD)if [[ -n "$current_branch" ]]; thengit branch.add $note_message;fi
fiexit $checkout_status

使用方式

git co -b feat/test -m '这是一个分支的描述'

原文地址 git branch 分支描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89382.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89382.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89382.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode|Day18|20. 有效的括号|Python刷题笔记

LeetCode&#xff5c;Day18&#xff5c;20. 有效的括号&#xff5c;Python刷题笔记 &#x1f5d3;️ 本文属于【LeetCode 简单题百日计划】系列 &#x1f449; 点击查看系列总目录 >> &#x1f4cc; 题目简介 题号&#xff1a;20. 有效的括号 难度&#xff1a;简单 题目…

使⽤Pytorch构建⼀个神经⽹络

关于torch.nn:使⽤Pytorch来构建神经⽹络, 主要的⼯具都在torch.nn包中.nn依赖于autograd来定义模型, 并对其⾃动求导.构建神经⽹络的典型流程:定义⼀个拥有可学习参数的神经⽹络遍历训练数据集处理输⼊数据使其流经神经⽹络计算损失值将⽹络参数的梯度进⾏反向传播以⼀定的规则…

网络爬虫的详细知识点

基本介绍 什么是网络爬虫 网络爬虫&#xff08;Web Crawler&#xff09;是一种自动化程序&#xff0c;用于从互联网上抓取、解析和存储网页数据。其核心功能是模拟人类浏览行为&#xff0c;通过HTTP/HTTPS协议访问目标网站&#xff0c;提取文本、链接、图片或其他结构化信息&…

AndroidX中ComponentActivity与原生 Activity 的区别

一、AndroidX 与原生 Activity 的区别 1. 概念与背景 原生 Activity&#xff1a;指 Android 早期&#xff08;API 1 起&#xff09;就存在于 android.app 包下的 Activity 类&#xff08;如 android.app.Activity&#xff09;&#xff0c;是 Android 最初的 Activity 实现&…

Spring AI 使用 Elasticsearch 作为向量数据库

前言 嗨&#xff0c;大家好&#xff0c;我是雪荷&#xff0c;最近在公司开发 AI 知识库&#xff0c;同时学到了一些 AI 开发相关的技术&#xff0c;这期先与大家分享一下如何用 ES 当做向量数据库。 安装ES 第一步我们先安装 Elasticsearch&#xff0c;这里建议 Elasticsear…

TypeScript 配置全解析:tsconfig.json、tsconfig.app.json 与 tsconfig.node.json 的深度指南

前言在现代前端和后端开发中&#xff0c;TypeScript 已经成为许多开发者的首选语言。然而&#xff0c;TypeScript 的配置文件&#xff08;特别是多个配置文件协同工作时&#xff09;常常让开发者感到困惑。本文将深入探讨 tsconfig.json、tsconfig.app.json 和 tsconfig.node.j…

读书笔记(学会说话)

1、一个人只有会说话&#xff0c;才会有好人缘&#xff0c;做事才会顺利。会说话的人容易成功。善于说话的人易成功&#xff0c;而不善说话的人往往寸步难行。我们要把话说得好听&#xff0c;同时更要把事做得漂亮。或许一句话&#xff0c;一件事&#xff0c;就可能使人生的旅途…

私有服务器AI智能体搭建-大模型选择优缺点、扩展性、可开发

以下是主流 AI 框架与模型的对比分析&#xff0c;涵盖其优缺点、扩展性、可开发性等方面。 文章目录一、AI 框架对比二、主流大模型对比三、扩展性对比总结四、可开发性对比总结五、选择建议&#xff08;按场景&#xff09;六、未来趋势一、AI 框架对比 框架优点缺点扩展性可开…

OpenCV直线段检测算法类cv::line_descriptor::LSDDetector

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该类用于实现 LSD (Line Segment Detector) 直线段检测算法。LSD 是一种快速、准确的直线检测方法&#xff0c;能够在不依赖边缘检测的前提下直接从…

Go语言流程控制(if / for)

分支结构package mainimport ("fmt""strconv" )/* 1.顺序结构 2.分支结构 3.循环结构 *//* if 条件1 {// 条件1为真时执行的代码 } else if 条件2 {// 条件1为假但条件2为真时执行的代码 } else {// 所有条件均为假时执行的代码 }一种特殊的条件分支结构if…

wx小程序设置沉浸式导航文字高度问题

第一步&#xff1a;在app.json中设置"navigationStyle": "custom"第二步骤&#xff1a;文件的home.js中// pages/test/test.js Page({/*** 页面的初始数据*/data: {statusBarHeight: 0,navBarHeight: 44 // 自定义导航内容区高度(单位px)},/*** 生命周期函…

C++算法竞赛篇:DevC++ 如何进行debug调试

C算法竞赛篇&#xff1a;DevC 如何进行debug调试前言一、准备工作&#xff1a;编译生成可执行程序二、核心步骤&#xff1a;设置断点与启动调试1. 设置断点2. 启动调试模式三、调试操作&#xff1a;逐步执行与变量监控1. 逐步执行代码2. 监控变量值变化四、调试结束前言 在算法…

语音大模型速览(三)- cosyvoice2

CosyVoice 2: Scalable Streaming Speech Synthesis with Large Language Models 论文链接&#xff1a;https://arxiv.org/pdf/2412.10117代码链接&#xff1a;https://github.com/FunAudioLLM/CosyVoice 一句话总结 CosyVoice 2 是一款改进的流式语音合成模型&#xff0c;其…

-lstdc++与-static-libstdc++的用法和差异

CMakeLists.txt 里写了&#xff1a; target_link_libraries(${PROJECT_NAME} PRIVATEgccstdc ) target_link_options(${PROJECT_NAME} PRIVATE -static-libstdc)看起来像是“链接了两次 C 标准库”&#xff0c;其实它们的作用完全不同&#xff1a;1. target_link_libraries(...…

Redis学习其二(事务,SpringBoot整合,持久化RDB和AOF)

文章目录5,事务5.1Redis 事务不保证原子性的原因5.2事务操作过程5.3监控6,SpringBoot整合Redis6.1Redis客户端6.1.1Jedis简单使用6.1.2Lettuce&Jedis6.2配置相关6.3使用6.3.1使用RedisTemplate6.3.2Redis工具类7,持久化RDB7.1RDB持久化原理7.2触发机制save命令flushall命令…

springboot项目部署到K8S

java后台 创建harbor镜像拉取Secret&#xff1a;kubectl create secret docker-registry harbor-regcred \--docker-server \ #harbor仓库地址--docker-username \ #harbor 账号--docker-password \ #harbor密码-n productionDockerfile FROM *harbor地址*/library/custom-jdk…

【FPGA开发】一文轻松入门Modelsim的基本操作

Modelsim仿真的步骤 &#xff08;1&#xff09;创建新的工程。 &#xff08;2&#xff09;在弹出的窗口中&#xff0c;确定项目名和工作路径&#xff0c;库保持为work不变(如有需要可以根据需求进行更改)。 &#xff08;3&#xff09;添加已经存在的文件&#xff08;rtl代码和t…

服务攻防-Java组件安全FastJson高版本JNDI不出网C3P0编码绕WAF写入文件CI链

服务攻防-Java组件安全&FastJson&高版本JNDI&不出网C3P0&编码绕WAF&写入文件CI链26天 原创 朝阳 Sec朝阳 2025年07月18日 09:23 湖北 标题已修改 演示环境&#xff1a; https://github.com/lemono0/FastJsonParty FastJson全版本Docker漏洞环境(涵盖1.…

【Python】DRF核心组件详解:Mixin与Generic视图

在 Django REST Framework (DRF) 中&#xff0c;mixins.CreateModelMixin、mixins.ListModelMixin、GenericAPIView 和 GenericViewSet 是构建 API 视图的核心组件。以下是对这些组件的主要方法及其职责的简要说明&#xff0c;内容清晰且结构化&#xff1a;1. mixins.CreateMod…

HTML+CSS+JS基础

文章目录&#xff08;一&#xff09;html1.常见标签&#xff08;1&#xff09;注释&#xff08;2&#xff09;标题 h1~h6&#xff08;3&#xff09;段落 p&#xff08;4&#xff09;换行与空格 br \ &#xff08;5&#xff09;格式化标签 b i s u&#xff08;6&#xff09;…