gcop:簡化 Git 提交流程的高效助手 | 一鍵生成 commit message

  • 💖 大家好,我是Zeeland。Tags: 大模型創業、LangChain Top Contributor、算法工程師、Promptulate founder、Python開發者。
  • 📣 個人說明書:Zeeland
  • 📣 個人網站:https://me.zeeland.cn/
  • 📚 Github主頁: Undertone0809 (Zeeland)
  • 🎉 支持我:點贊👍+收藏??+留言📝 我會定期在博客、個人說明書、論壇中做一些技術分享。也歡迎大家閱讀我的個人說明書,大家可以在這里快速了解我和我做過的事情,期待和你交個朋友,有機會我們一起做一些有意思的事情

在日常的開發工作中,提交代碼是一項頻繁且必須的任務。而編寫一致且有意義的 git commit 消息對于項目的維護和代碼審核至關重要。然而,這也是一項需要花費時間和精力的工作。為了簡化這個過程,我開發了一個名為 gcop 的 Git 提交助手工具,只需一個命令就能自動生成合適的 git commit message。

開發背景

gcop 的開發靈感來自于一次偶然的推文分享 https://x.com/mtrainier2020/status/1802941902964277379,我突然想到可以借助 git alias 添加一些小命令,于是我花了兩個小時的時間進行工程封裝,并發布了 pypi 包 ,so not only a demo。

我的目的很簡單,就是簡化自己的 git commit 流程。所有額外的操作或輸入自然語言的步驟都會降低開發體驗。因此,在這個核心場景下,我希望有一個工具可以無縫地集成到我的 git 工作流中,自動生成提交消息。

gcop 就是這樣一個工具,它通過大語言模型的能力幫助我撰寫 git commit 消息。只需要一個簡單的命令 git gcommit,就能生成符合規范的提交消息,如 feat: …。

在這個核心場景下,git gcommit 命令直接無縫接入我的 git 工作流中,讓我可以非常方便地自動 commit。gcop 簡單,但足夠高效。

項目亮點

  1. 無縫集成到 Git 工作流: gcop 能讓開發者在不需要額外輸入任何自然語言的情況下,輕松生成合適的提交消息。只需一個 git gcommit 命令,即可完成。
  2. 集成大語言模型: gcop 集成了 promptulate 的能力,可以使用市面上的任意語言模型來生成 git commit message,如 gpt-4o、deepseek 等模型,用戶可以通過配置文件(如 config.yaml)來選擇和配置自己的模型,使用起來非常方便。
  3. 標準化的 Python 項目: gcop 是基于 p3g 腳手架生成的,確保了項目的標準化和可維護性。p3g 作為一個成熟的 Python 項目生成器,可以方便地創建標準化的 Python 工程化項目。

使用指南

安裝和初始化

首先,通過 pip 安裝 gcop:

pip install gcop

安裝后需要初始化配置,運行以下命令:

gcop init

這將把 gcop 的命令別名添加到 git 中。

基本使用

在項目中執行以下命令以生成提交消息:

git add .
git gcommit

通過這些簡單的操作,gcop 會根據階段變更自動生成合適的提交消息。

配置語言模型

首次使用前需要配置語言模型。通過運行以下命令打開配置文件:

git gconfig

gcop 將生成一個 config.yaml 文件,用戶可以在其中配置自己的語言模型。例如:

model:model_name: OpenAI/gpt-4api_key: YOUR_API_KEY

視頻演示

為了更清晰地展示 gcop 的功能,這里附上一個視頻演示鏈接:
https://www.youtube.com/watch?v=j7qKI_TdhXs

如何自定義模型

gcop 集成了 promptulate 的能力,這意味著你可以輕松集成市面上的任意模型,下面的一些實例展示了如何配置不同大模型廠商的模型名。

下面是一個模型模版:

model:model_name: provider/name,eg openai/gpt-4oapi_key: your_api_key
OpenAI

If you want to initialize the model, you can use the following command:

model:model_name: openai/gpt-4oapi_key: your_api_key
Claude
model:model_name: claude-2api_key: your_api_key
Deepseek
model:model_name: deepseek/deepseek-chatapi_key: your_api_key
Ollama
model:model_name: ollama/llama2api_key: your_api_keyapi_base: http://localhost:11434
OpenAI Proxy

如果你使用智譜的模型,這意味著你可以通過如下方式進行配置:

model:model_name: openai/glm-4api_key: your_api_keyapi_base: https://open.bigmodel.cn/api/paas/v4/

Use openai/model_name provider means you are using OpenAI SDK to call the model.

OpenRouter
model:model_name: openrouter/google/palm-2-chat-bisonapi_key: your_api_key

HuggingFace

model:model_name: huggingface/gpt2api_key: your_api_key

如何貢獻

如果您對 gcop 感興趣,可以訪問 GitHub 項目頁面獲取更多信息和源碼:https://github.com/Undertone0809/gcop

總結

在開發過程中,我深刻體會到簡化工作流程的重要性。gcop 的誕生,就是為了讓開發者能夠更加專注于核心代碼的編寫,而不必被繁瑣的提交消息所困擾。希望 gcop 能幫助更多的開發者提升工作效率。

當然,同步分享一下上面提到的兩個項目,promptulate https://github.com/Undertone0809/promptulate
p3g 這兩個框架也是本人開發。

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

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

相關文章

[SAP ABAP] 數據字典

ABAP數據字典是定義和管理數據庫對象的工具 系統的所有全局數據類型以及數據庫表結構等都需要在數據字典中創建和維護(數據字典中的對象對所有ABAP程序都是全局的) 通過數據字典,我們可以把數據庫對象管理好,后續才能順利的進行功能開發,SA…

華為面試題及答案——大數據

(1)namenode內存滿了,如何進行擴容,調什么參數。 1. 增加 NameNode 的內存 在 hadoop-env.sh 文件中,可以增加 JVM 分配給 NameNode 的內存。通常是在 HADOOP_NAMENODE_OPTS 中增加 -Xmx 參數來增加最大堆內存。 export HADOOP_NAMENODE_OPTS="-Xmx8g -Xms4g ${HA…

集合,Collection接口

可動態保存任意多個對象,使用比較方便 提供了一系列方便操作對象的方法:add,remove,set,get等 使用集合添加刪除新元素,代碼簡潔明了 單列集合 多列集合 Collection接口 常用方法 List list new Arra…

設計模式詳解(一)——策略模式

策略模式(Strategy Pattern)是一種行為型的設計模式,它允許你定義一系列算法,然后將它們封裝起來,使它們可以相互替換。這樣做的好處是,你可以動態地選擇要使用的算法,而不必在運行時進行檢查或…

多媒體基礎

筆者按: 昨日復習的信息網絡安全約莫是掛了,常言道:知恥而后勇。誠如斯言 于是決心多媒體是不能再掛了,不然直接變成xxx之流,自增笑耳 語雀鏈接:多媒體基礎 一.多媒體計算機概述 媒體:承載信息…

動手學深度學習(Pytorch版)代碼實踐 -卷積神經網絡-21多輸入多輸出通道

21多輸入多輸出通道 import torch from d2l import torch as d2ldef corr2d(X, K):"""計算二維互相關運算"""h, w K.shapeY torch.zeros((X.shape[0] - h 1, X.shape[1] - w 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,…

go語言DAY7 字典Map 指針 結構體 函數

Go中Map底層原理剖析_go map底層實現-CSDN博客 目錄 Map 鍵值對key,value 注意: map唯一確定的key值通過哈希運算得出哈希值 一、 map的聲明及初始化: 二、 map的增刪改查操作: 三、 map的賦值操作與切片對比: 四、 通用所有…

[leetcode hot 150]第一百二十二題,買賣股票的最佳時機Ⅱ

題目: 給你一個整數數組 prices ,其中 prices[i] 表示某支股票第 i 天的價格。 在每一天,你可以決定是否購買和/或出售股票。你在任何時候 最多 只能持有 一股 股票。你也可以先購買,然后在 同一天 出售。 返回 你能獲得的 最大…

【C++】初識C++(一)

一.什么是C C語言是結構化和模塊化的語言,適合處理較小規模的程序。對于復雜的問題,規模較大的程序,需要高度 的抽象和建模時,C語言則不合適。為了解決軟件危機, 20世紀80年代, 計算機界提出了OOP(object o…

圖形處理單元(GPU)在現代計算中的應用與挑戰(研究論文框架)

摘要:隨著高性能計算需求的日益增長,圖形處理單元(GPU)已從專業的圖形渲染處理器轉變為具有高性能并行處理能力的多功能計算平臺。本文將探討GPU的核心優勢、編程模型、在不同領域的應用以及面臨的挑戰和限制。此外,還將討論GPU技術的未來發展趨勢和潛在的研究機會。 關鍵…

mongodb 查詢語句學習筆記

基礎查詢 正則查詢 {status: A,$or: [{ qty: { $lt: 30 } }, { item: { $regex: ^p } }] }AND 查詢 { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" }OR 查詢 { $or: [ { status: "A" }, { qty: { $lt: 30 } …

2024年機動車簽字授權人題庫,助你沖刺!絕對不會讓你后悔!

61.()使汽車按駕駛人選定的方向行駛。 A.傳動系統 B.行駛系統 C.轉向系統 D.制動系統 答案:C 62.()使汽車各總成及部件安裝在適當的位置,對全車起支承作用以保證汽車正常行駛。 A.傳動系統 B.行駛系…

01.計算機圖形學概述

01.計算機圖形學概述 從技術的角度上看,什么是一個好的畫面? 直接看這個畫面是不是足夠亮,這體現了渲染中的一個技術叫全局光照。 應用范圍 游戲( Video Games)電影/特效( Movies)動漫/動畫&…

如何讓Linux系統變得更安全?

本文嘗試從linux安全加固、漏洞利用及防御措施、安全意識三個方面思考如何讓linux系統變得更加安全. 一、linux常見安全加固操作 對Linux系統進行詳細的安全加固操作,可以從多個方面進行,包括系統更新和補丁管理、用戶和權限管理、網絡安全配置、文件和系統安全、日志和審計…

Qt代碼分析

要使用代碼分析工具,請在Analyze菜單或(Start Debugging of Startup Project)按鈕的下拉菜單中選擇它。當您處于調試模式時,您可以通過在調試器工具欄上的菜單中選擇工具來切換工具。 您可以將調試模式下的視圖拖放到屏幕上的新位置。意見的大小和立場將…

c++關鍵字default,delete

文章目錄 概述defaultdelete 小結 概述 在看一些開源項目的源碼的時候,經常會看到default和delete。這2個關鍵字究竟什么意思呢?這篇文章就來一點一點拆解下。 default 默認構造函數、拷貝構造函數、移動構造函數、拷貝賦值運算符、移動賦值運算符和析…

HDFS學習

3.5 HDFS存儲原理 3.5.1 冗余數據保存 作為一個分布式文件系統,為了保證系統的容錯性和可用性,HDFS采用了多副本方式對數據進行冗余存儲,通常一個數據塊的多個副本會被分布到不同的數據節點上。 如圖所示,數據塊1被分別存放到…

石油化工廠為什么要用專業防爆手機?

防爆手機之所以必須使用專業設計的產品,主要是出于安全考慮,以防止在易燃易爆環境中因手機使用不當引發爆炸事故。以下幾點詳細解釋了使用專業化工防爆手機的必要性: 本質安全設計:頂堅專業防爆手機采用了本質安全(本安…

動手學深度學習(Pytorch版)代碼實踐 -計算機視覺-47轉置卷積

47轉置卷積 import torch from torch import nn from d2l import torch as d2l# 輸入矩陣X和卷積核矩陣K實現基本的轉置卷積運算 def trans_conv(X, K):h, w K.shapeY torch.zeros((X.shape[0] h - 1, X.shape[1] w - 1))for i in range(X.shape[0]):for j in range(X.shap…

昇思25天學習打卡營第5天|數據變換Transforms

數據變換Transforms 介紹Transforms分類Common TransformsVision TransformsText TransformsPythonTokenizer LookupLambda Transforms 參考 介紹 MindSpore提供不同種類的數據變換(Transforms),配合數據處理Pipeline來實現數據預處理。 所有…