Git Commit 模板完整配置指南

Git Commit 模板完整配置指南

📋 目錄

  • Git Commit 模板完整配置指南
    • 📋 目錄
    • 🎯 為什么需要 Commit 模板
    • 📝 推薦的 Commit 模板
      • 標準模板格式
      • C++ 項目特化模板
    • ?? 系統級配置
      • 1. 創建模板文件
      • 2. 配置 Git 使用模板
      • 3. 驗證配置
    • 🔤 Commit 類型詞匯字典
      • 基礎類型
      • C++ 專用類型
      • 項目管理類型
    • 💻 VSCode 集成配置
      • 方法一:使用 Git Graph 插件
      • 方法二:使用 Conventional Commits 插件
      • 方法三:使用代碼片段
    • 🔧 CLion 集成配置
      • 配置 Commit 模板
      • 使用 Live Templates
    • 📖 使用示例
      • 好的 Commit 示例
      • 避免的寫法
    • 🛠? 高級配置
      • 項目級配置
      • 團隊共享配置
      • 自動化驗證
    • 💡 最佳實踐
    • 🔗 參考資源

🎯 為什么需要 Commit 模板

使用規范的 commit 模板有以下好處:

  • 📈 提高代碼歷史可讀性:統一的格式讓團隊成員快速理解變更
  • 🤖 支持自動化工具:可以自動生成 changelog、版本號等
  • 🔍 便于查找和過濾:通過類型快速定位特定類型的提交
  • 👥 團隊協作規范:統一團隊的提交標準

📝 推薦的 Commit 模板

標準模板格式

基于 Conventional Commits 規范:

<type>(<scope>): <subject><body><footer>

C++ 項目特化模板

針對 C++ 項目的優化模板:

<type>(<component>): <description># 詳細說明 (可選)
# - 為什么做這個變更?
# - 解決了什么問題?
# - 對性能/內存的影響?# 破壞性變更 (如果有)
# BREAKING CHANGE: # 關聯問題 (如果有)
# Fixes #123
# Closes #456
# Refs #789# 測試說明 (如果有)
# - 單元測試:
# - 集成測試:
# - 性能測試:

?? 系統級配置

1. 創建模板文件

首先創建模板文件:

# 在用戶主目錄創建模板文件
touch ~/.gitmessage.txt

編輯 ~/.gitmessage.txt 文件內容:

# <type>(<scope>): <subject>
# 
# <body>
# 
# <footer># 🏷? Type 類型說明:
# feat     新功能
# fix      Bug修復
# docs     文檔更新
# style    代碼格式化(不影響功能)
# refactor 重構代碼
# perf     性能優化
# test     測試相關
# build    構建系統或依賴管理
# ci       CI/CD配置
# chore    其他雜項更改
# revert   回滾提交
#
# 📦 Scope 范圍說明 (C++項目):
# core     核心功能模塊
# api      API接口
# ui       用戶界面
# db       數據庫相關
# net      網絡通信
# algo     算法實現
# mem      內存管理
# thread   多線程
# io       輸入輸出
# config   配置管理
# test     測試代碼
# build    構建配置
# deps     依賴管理
#
# 📝 Subject 主題說明:
# - 使用中文或英文均可
# - 首字母小寫
# - 結尾不加句號
# - 控制在50字符以內
#
# 📖 Body 說明:
# - 詳細描述變更內容
# - 說明變更原因和影響
# - 每行控制在72字符以內
#
# 🔗 Footer 說明:
# - 關聯的Issue: Fixes #123, Closes #456
# - 破壞性變更: BREAKING CHANGE: xxx
# - 其他相關信息

2. 配置 Git 使用模板

# 全局配置
git config --global commit.template ~/.gitmessage.txt# 或者只為當前項目配置
git config commit.template ~/.gitmessage.txt

3. 驗證配置

# 查看當前配置
git config --get commit.template# 測試模板
git commit

🔤 Commit 類型詞匯字典

基礎類型

類型英文描述使用場景
? 新功能feat新增功能特性添加新的API、新的用戶功能
🐛 修復fix修復Bug修復崩潰、邏輯錯誤、內存泄漏
📚 文檔docs文檔更新README、注釋、API文檔
💎 樣式style代碼格式化縮進、空格、命名規范
?? 重構refactor重構代碼優化結構但不改變功能
? 性能perf性能優化算法優化、內存優化
? 測試test測試相關單元測試、集成測試
🔧 構建build構建系統CMake、Makefile、依賴
👷 CIci持續集成GitHub Actions、Jenkins
🎨 雜項chore其他雜項配置文件、工具更新

C++ 專用類型

類型英文描述使用場景
🔒 安全security安全相關修復安全漏洞、權限控制
💾 內存memory內存管理內存泄漏修復、智能指針
🧵 線程thread多線程相關線程安全、并發優化
📡 網絡network網絡通信TCP/UDP、協議實現
🎛? 接口interface接口變更API設計、接口重構
📊 算法algorithm算法實現數據結構、算法優化
🔌 插件plugin插件系統插件架構、模塊化
?? 配置config配置管理配置文件、參數調優

項目管理類型

類型英文描述使用場景
🎉 初始init項目初始化項目創建、初始提交
🔖 版本release版本發布版本標簽、發布準備
? 回滾revert回滾變更撤銷之前的提交
🔀 合并merge分支合并合并分支、解決沖突
🚀 部署deploy部署相關部署腳本、環境配置

💻 VSCode 集成配置

方法一:使用 Git Graph 插件

  1. 安裝插件

    外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

    • 打開 VSCode 擴展市場 (Ctrl+Shift+X)
    • 搜索并安裝 “Git Graph”
  2. 配置插件

    // settings.json
    {"git-graph.commitDetailsView.fileView.fileTree.compactFolders": false,"git-graph.commitDetailsView.location": "Docked to Bottom","git-graph.repository.commits.showSignatureStatus": true
    }
    

方法二:使用 Conventional Commits 插件

  1. 安裝插件

    • 搜索并安裝 “Conventional Commits”
  2. 配置插件

    // settings.json
    {"conventionalCommits.emojiFormat": "emoji","conventionalCommits.showEditor": true,"conventionalCommits.promptBody": true,"conventionalCommits.promptFooter": true,"conventionalCommits.scopes": ["core", "api", "ui", "db", "net", "algo", "mem", "thread", "io", "config", "test", "build"]
    }
    

方法三:使用代碼片段

創建 commit 消息代碼片段:

  1. 打開代碼片段設置

    • Ctrl+Shift+P → “Preferences: Configure User Snippets”
    • 選擇 “git-commit” 或創建全局片段
  2. 添加片段

    {"Conventional Commit": {"prefix": "commit","body": ["${1|feat,fix,docs,style,refactor,perf,test,build,ci,chore|}(${2:scope}): ${3:description}","","${4:// 詳細說明}","","${5:// Footer}"],"description": "Conventional commit template"},"C++ Commit": {"prefix": "cppcommit","body": ["${1|feat,fix,refactor,perf,memory,thread,algorithm|}(${2|core,api,mem,thread,net,algo|}): ${3:description}","","${4:// 變更說明:}","${5:// - 影響范圍:}","${6:// - 性能影響:}","","${7:// Fixes #${8:issue_number\\}}"],"description": "C++ specific commit template"}
    }
    

🔧 CLion 集成配置

配置 Commit 模板

  1. 打開設置

    外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

    • FileSettings (Windows/Linux) 或 CLionPreferences (macOS)
  2. 配置 VCS

    • 導航到 Version ControlGit
    • 在 “Commit Message Template” 中添加模板路徑:~/.gitmessage.txt
  3. 配置 Commit Dialog

    • Version ControlCommit
    • 勾選 “Use non-modal commit interface”
    • 設置 “Right margin (columns)” 為 72

使用 Live Templates

  1. 創建 Live Template

    • FileSettingsEditorLive Templates
    • 點擊 + 創建新的 Template Group:“Git Commits”
  2. 添加模板

    Abbreviation: cc
    Description: Conventional Commit
    Template text:
    $TYPE$($SCOPE$): $DESCRIPTION$$BODY$$FOOTER$
    
  3. 設置變量

    • TYPE: enum("feat","fix","docs","style","refactor","perf","test","build","ci","chore")
    • SCOPE: enum("core","api","ui","db","net","algo","mem","thread","io","config")
    • DESCRIPTION: 無默認值
    • BODY: 無默認值
    • FOOTER: 無默認值

📖 使用示例

好的 Commit 示例

# 新功能
feat(network): 添加TCP客戶端自動重連功能實現了指數退避算法的自動重連機制,包括:
- 可配置的初始延遲、最大延遲和遞增倍數
- 使用condition_variable實現可中斷等待
- 優雅的線程管理和資源清理性能影響:重連延遲從固定1秒優化為自適應延遲
內存影響:增加約200字節的配置存儲開銷Fixes #123
# Bug修復
fix(memory): 修復DeviceTcpClient線程無法正常退出的問題問題描述:
- 程序退出時TCP客戶端線程被阻塞在sleep操作中
- 導致程序無法優雅關閉,需要強制kill解決方案:
- 使用condition_variable替代sleep進行可中斷等待
- 在stop()方法中使用detach()而不是join()避免主線程阻塞
- 添加多層次的停止標志檢查測試驗證:
- 單元測試:? 所有連接管理測試通過
- 集成測試:? 程序可在3秒內正常退出
- 壓力測試:? 1000次啟停循環無內存泄漏Closes #456
# 性能優化
perf(algorithm): 優化字符串匹配算法性能使用KMP算法替換暴力匹配,在大數據集上性能提升85%:
- 平均時間復雜度從O(mn)降低到O(m+n)
- 內存使用量減少30%
- 支持Unicode字符串匹配Benchmark結果:
- 1MB文本搜索:450ms → 68ms
- 10MB文本搜索:4.2s → 0.6sRefs #789

避免的寫法

# ? 太簡單,信息不足
fix bug# ? 沒有類型標識
修復了一個內存泄漏問題# ? 描述不清楚
feat: 添加了一些功能# ? 主題行太長
feat(network): 添加了TCP客戶端自動重連功能包括指數退避算法可配置參數以及優雅的線程管理# ? 混合多種變更
feat: 添加新功能并修復bug同時更新文檔

🛠? 高級配置

項目級配置

在項目根目錄創建 .gitmessage 文件:

# 項目特定的模板
cat > .gitmessage << 'EOF'
feat(component): description# Project: NeuroHub
# Team: Network Team
# Reviewer: @reviewer# 變更檢查清單:
# [ ] 代碼已通過靜態分析
# [ ] 已添加單元測試
# [ ] 已更新文檔
# [ ] 已檢查內存泄漏
# [ ] 已進行性能測試Fixes #
EOF# 配置項目使用該模板
git config commit.template .gitmessage

團隊共享配置

創建 .gitconfig-template 文件供團隊使用:

[commit]template = ~/.gitmessage.txtverbose = true[core]editor = code --wait  # 或 vim, nano 等[alias]# 便捷的commit別名cf = commit --no-verify  # 跳過pre-commit hooksca = commit --amend      # 修改最后一次提交cm = commit -m           # 快速提交cmt = commit             # 使用模板提交

自動化驗證

創建 pre-commit hook 驗證 commit 消息格式:

#!/bin/sh
# .git/hooks/commit-msgcommit_regex='^(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\(.+\))?: .{1,50}'if ! grep -qE "$commit_regex" "$1"; thenecho "Invalid commit message format!"echo "Format: type(scope): description"echo "Example: feat(api): add user authentication"exit 1
fi

💡 最佳實踐

  1. 主題行原則

    • 長度控制在50字符以內
    • 使用動詞原形開頭
    • 首字母小寫
    • 結尾不加句號
  2. 正文內容

    • 每行不超過72字符
    • 說明"是什么"和"為什么",而不是"怎么做"
    • 多個段落用空行分隔
  3. Footer規范

    • 關聯Issue:Fixes #123, Closes #456
    • 破壞性變更:BREAKING CHANGE: API changed
    • 共同作者:Co-authored-by: Name <email>
  4. C++ 項目特殊考慮

    • 說明內存和性能影響
    • 注明線程安全性變更
    • 記錄API兼容性變化
    • 包含測試覆蓋率信息
  5. 提交頻率

    • 小步快跑,一次提交解決一個問題
    • 避免混合不相關的變更
    • 確保每次提交都能編譯通過

🔗 參考資源

  • Conventional Commits 規范
  • Angular Commit Guidelines
  • How to Write a Git Commit Message
  • Semantic Versioning
  • Git Hooks Documentation

💡 提示: 將此文檔保存為團隊文檔,定期更新模板以適應項目需求的變化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87801.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87801.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87801.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ELK服務搭建】

Ubuntu 20.04環境下部署Elastic Stack 8.18日志系統完整指南 一、環境準備 系統要求 Ubuntu 20.04 LTS硬件配置&#xff1a;4核CPU / 8GB內存 / 100GB硬盤網絡&#xff1a;需外網訪問權限 1. 基礎環境配置 首先安裝SSH服務以便遠程管理&#xff1a; # 更新軟件源 apt u…

Mac電腦 Office 2024 LTSC 長期支持版(Excel、Word、PPT)

Office 2024 mac&#xff0c;是一款是一款專為蘋果電腦用戶設計的高性能、高安全性的辦公套裝 集成了Word、Excel、PowerPoint、Outlook等經典應用&#xff0c;為用戶提供了一站式的辦公解決方案。 不僅繼承了Office系列一貫的卓越性能&#xff0c;還在功能性和用戶體驗上進行…

深入解析 Schema 在不同數據庫中的百變面孔

在數據庫的世界里&#xff0c;數據是核心資產&#xff0c;但如何高效、有序、安全地組織和理解這些數據&#xff1f;答案就是 Schema&#xff08;模式或架構&#xff09;。它如同建筑的圖紙、樂隊的樂譜&#xff0c;是數據庫的設計藍圖和運行規則手冊。今天&#xff0c;我們就來…

Python 數據分析與可視化 Day 2 - 數據清洗基礎

&#x1f3af; 今日目標 學會識別和處理缺失數據&#xff08;NaN&#xff09;學會刪除/填補缺失值清理重復數據修改列類型&#xff0c;準備數據分析 &#x1f9fc; 一、缺失值處理&#xff08;NaN&#xff09; ? 1. 檢查缺失值 import pandas as pd df pd.read_csv("…

3DS中文游戲全集下載 任天堂3DS簡介3DS第一方獨占游戲推薦

任天堂3DS 的詳細介紹&#xff0c;涵蓋其硬件特性、核心功能、游戲陣容及歷史地位&#xff1a; 3DS游戲全集下載 https://pan.quark.cn/s/dd40e47387e7 https://sink-698.pages.dev/3ds CIA CCA 等格式可用于3DS模擬器和3DS實體機 3DS 是什么&#xff1f; 全稱&#xff1a;Nin…

【Python小練習】3D散點圖

資產風險收益三維分析 背景 王老師是一名金融工程研究員&#xff0c;需要對多個資產的預期收益、風險&#xff08;波動率&#xff09;和與市場的相關性進行綜合分析&#xff0c;以便為投資組合優化提供決策依據。 代碼實現 import matplotlib.pyplot as plt from mpl_toolk…

安寶特案例丨突破傳統手術室,Vuzix AR 眼鏡圓滿助力全膝關節置換術

在巴西圣保羅醫院的手術室里&#xff0c;骨科權威 Ricardo Gobbi醫生正戴著 安寶特 Vuzix 智能 AR 眼鏡&#xff0c;為一位膝關節炎患者實施全膝關節置換術。與傳統手術不同的是&#xff0c;他的視野中實時疊加著骨骼三維模型、切割路徑標線和動態數據 —— 這并非科幻場景&…

qt設置文件自動保存-cnblog

步驟&#xff1a; 「工具」->「選項」->「環境」->「Auto-save modified files」。 可開啟/關閉自動保存文件功能&#xff0c;還可設置自動保存時間的間隔(最短間隔1分鐘)。 鐘)。

linux下如何找到dump文件被生成到哪里了

在大多數 Linux 系統中&#xff0c;核心轉儲文件&#xff08;core dump&#xff09;通常由系統自動保存在當前工作目錄下&#xff0c;或者由配置決定其保存位置。核心轉儲文件的默認文件名通常包含進程 ID&#xff08;PID&#xff09;和程序名&#xff0c;例如 core.PID 或 cor…

API 調試工具校驗 JSON Mock 接口(一):無參請求與基礎響應驗證

在前后端分離的開發模式中&#xff0c;JSON Mock 工具為前端開發人員在后端接口未就緒時提供了極大便利&#xff0c;能夠模擬返回 JSON 數據的 API 接口&#xff0c;實現前端獨立開發與測試。而 API 開發調試工具 作為一款強大的接口測試工具&#xff0c;可進一步對這些 Mock 接…

單體架構、微服務架構和分布式架構的區別

. 架構定義與核心特征 1.1 單體架構(Monolithic Architecture) 單體架構是將所有功能模塊集中在一個單一代碼庫中的傳統架構模式: 所有功能(UI層、業務邏輯、數據訪問)打包為單一部署單元通常使用單一技術棧開發(如Spring Boot、Django等)共享單一數據庫實例進程內通信(方法…

如何重新安裝 Rust

在開發過程中&#xff0c;我們有時可能需要重新安裝 Rust&#xff0c;比如遇到版本沖突、環境配置錯誤&#xff0c;或者僅僅是想更新到最新版本。本文將詳細介紹如何卸載現有 Rust 安裝&#xff0c;并重新安裝 Rust&#xff0c;同時還會介紹一些常見的配置技巧&#xff0c;幫助…

使用springboot實現過濾敏感詞功能

一&#xff0c;在springboot項目的resources目錄里創建sensitive-words.text&#xff08;敏感詞文本&#xff09; 每個詞獨自一行 列如&#xff1a; 賭博 吸毒 開票 二&#xff0c;在util創建工具類SensitiveFilter package com.nowcoder.community.util;Component public c…

Vue 蒼穹外賣

Vue 蒼穹外賣 node_modules&#xff1a;當前項目依賴的js包 assets&#xff1a;靜態資源存放目錄 components&#xff1a;公共組件存放目錄 App.vue&#xff1a;項目的主組件&#xff0c;頁面的入口文件 main.js&#xff1a;整個項目的入口文件 package.json&#xff1a;項…

評估視覺在CNN 在人類動作識別準確率

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 抽象 本研究使用 COCO 圖像語料庫的三類子集探索人類動作識別&#xff0c;對從簡單的全連接網絡到 transformer 架構的模型進行基準測試。二進制 Vision Transformer &#xff08;ViT&#xff09; 實現了…

Self-supervised Learning(BERT/GPT/T5)

李宏毅老師《Pre-train Model》 什么是:Self-supervised Learning BERT BERT 能做什么 Mask Input Next Sentence Prediction(not helpful) BERT其它的能力 上述的能力&#xff0c;可以認為是一種填空的能力&#xff0c;那么除了這些&#xff0c;還有哪些有用的能力呢&…

《NuGet:.NET開發的魔法包管理器》

一、NuGet 初相識 在軟件開發的廣袤天地中&#xff0c;依賴管理始終是一個核心議題。想象一下&#xff0c;在沒有高效包管理工具的年代&#xff0c;開發者如同在黑暗中摸索前行。當項目逐漸龐大&#xff0c;所需的外部庫和組件日益增多&#xff0c;手動管理這些依賴就如同一場噩…

Vulkan 學習筆記12—深度緩沖

一、3D幾何體與深度問題 Z坐標引入 將2D幾何體擴展為3D時&#xff0c;需在Vertex結構體中添加glm::vec3 pos表示三維位置&#xff0c;并更新頂點輸入描述符格式為VK_FORMAT_R32G32B32_SFLOAT。頂點著色器需接收3D坐標并通過模型-視圖-投影矩陣轉換為裁剪坐標。 深度沖突問題 當…

AWS EC2使用SSM會話管理器連接

&#x1f9e9; 前提條件 已創建并運行中的 Amazon EC2 實例&#xff08;Amazon Linux 2023&#xff09; 擁有管理員權限的 AWS 賬戶 已連接到實例&#xff08;例如通過 EC2 Instance Connect&#xff09; 第一步&#xff1a;手動安裝 SSM Agent Amazon Linux 2023 默認未安…

Llama 4 模型卡及提示格式介紹

以下是Llama 4支持的特殊標記和標簽的完整列表: 通用標記 <|begin_of_text|>:指定提示符的開始。 <|end_of_text|>:模型將停止生成更多標記。此標記僅由預訓練的模型生成。 <|header_start|>…<|header_end|>:這些標記包含特定消息的角色。可能的…