為 Git branch 命令添加描述功能

寫在最前面的使用方式

  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;…