【Python】自动化GIT提交

在日常开发中,我们经常需要频繁地向 Git 仓库提交代码。虽然 git addgit commitgit push 这几个命令并不复杂,但重复操作容易出错,也浪费时间。本文将介绍如何使用 Python 脚本自动化完成 Git 提交流程,让开发更高效!

实现思路

我们将使用 Python 的 subprocess 模块来调用系统中的 Git 命令。脚本会依次执行以下操作:

  1. 检查工作目录状态
  2. 添加所有变更文件到暂存区
  3. 提交变更(带提交信息)
  4. 推送到远程仓库

完整代码

import subprocess
import sys
from datetime import datetimedef run_command(command):"""执行系统命令并返回结果:param command: 命令字符串或列表:return: (成功标志, 输出信息)"""try:# 如果传入字符串,则分割成列表if isinstance(command, str):command = command.split()# 执行命令result = subprocess.run(command, capture_output=True, text=True, check=True)return True, result.stdout.strip()except subprocess.CalledProcessError as e:return False, f"命令执行失败: {e.stderr.strip()}"except Exception as e:return False, f"未知错误: {str(e)}"def git_auto_commit(commit_message=None):"""自动化Git提交:param commit_message: 提交信息,若为空则使用默认信息"""print("🚀 开始自动化Git提交流程...\n")# 1. 检查是否在Git仓库中success, output = run_command("git status")if not success:print("❌ 错误: 当前目录不是Git仓库或Git未安装。")print(output)returnprint("✅ 检测到Git仓库,状态检查通过。")# 2. 获取当前分支信息success, branch = run_command("git branch --show-current")if success:print(f"📌 当前分支: {branch}")else:print("⚠️  无法获取分支信息。")# 3. 添加所有变更文件print("\n📂 正在添加所有变更文件到暂存区...")success, output = run_command("git add .")if not success:print(f"❌ 文件添加失败: {output}")returnprint("✅ 所有文件已添加。")# 4. 构造提交信息if not commit_message:commit_message = f"Auto-commit from Python script on {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"# 5. 执行提交print(f"\n📝 正在提交变更: {commit_message}")success, output = run_command(["git", "commit", "-m", commit_message])if not success:# 如果没有变更需要提交,git commit 会失败,但这是正常情况if "nothing to commit" in output:print("✅ 仓库已是最新,无需提交。")# 仍然继续推送,以防有新的标签或其他更新else:print(f"❌ 提交失败: {output}")returnelse:print("✅ 提交成功!")# 6. 推送到远程仓库print("\n📤 正在推送到远程仓库...")success, output = run_command("git push")if not success:print(f"❌ 推送失败: {output}")print("💡 请检查网络连接、远程仓库地址和认证信息(如SSH密钥或Token)。")returnprint("✅ 推送成功!")print(f"\n🎉 自动化提交流程已完成!")# 7. 显示最终状态print("\n🔍 最终仓库状态:")success, status = run_command("git status --short")if success:if status:print("⚠️  以下文件未跟踪或有未提交的更改:")print(status)else:print("✅ 仓库状态干净,所有更改已提交并推送。")else:print("无法获取最终状态。")if __name__ == "__main__":# 可以从命令行参数获取提交信息message = Noneif len(sys.argv) > 1:message = " ".join(sys.argv[1:])git_auto_commit(message)

使用方法

  1. 保存代码:将上述代码保存为 auto_git.py
  2. 确保环境
    • 系统已安装 Git,并配置好 SSH 密钥或凭据管理器(推荐使用 SSH 或 Personal Access Token)。
    • Python 环境正常(脚本兼容 Python 3.6+)。
  3. 运行脚本
    • 使用默认提交信息
      python auto_git.py
    • 指定自定义提交信息
      python auto_git.py "修复了登录页面的样式问题"

输出示例

🚀 开始自动化Git提交流程...✅ 检测到Git仓库,状态检查通过。
📌 当前分支: main
📂 正在添加所有变更文件到暂存区...
✅ 所有文件已添加。📝 正在提交变更: Auto-commit from Python script on 2025-07-29 16:45:30
✅ 提交成功!📤 正在推送到远程仓库...
✅ 推送成功!🎉 自动化提交流程已完成!🔍 最终仓库状态:
✅ 仓库状态干净,所有更改已提交并推送。

注意事项

  • 安全性:此脚本直接执行系统命令,请确保在可信环境中运行。
  • 错误处理:脚本包含了基本的错误处理,但复杂情况(如合并冲突)仍需手动干预。
  • 凭证:首次推送或凭证过期时,Git 可能会提示输入用户名/密码或使用 SSH 密钥。建议配置 SSH 免密或使用 Personal Access Token。
  • 灵活性:你可以根据需要修改 git add . 为更精确的路径,或者添加 git pull 在推送前先拉取更新。

结语

这个简单的 Python 脚本可以大大简化你的 Git 提交流程,特别适合于需要频繁提交小改动的场景(如笔记、文档更新)。你可以将其集成到 IDE、编辑器或作为定时任务运行,进一步提升开发效率!

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

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

相关文章

基于Qlearning强化学习的水下无人航行器路径规划与避障系统matlab性能仿真

目录 1.引言 2.算法仿真效果演示 3.数据集格式或算法参数简介 4.算法涉及理论知识概要 5.参考文献 6.完整算法代码文件获得 1.引言 水下无人航行器 (Autonomous Underwater Vehicle, AUV) 的路径规划与避障是海洋探索、资源开发和军事应用中的关键技术。传统的路径规划方…

模块自由拼装!Python重构DSSAT作物模块教程(以杂交水稻为例)

基于过程的作物生长模型(Process-based Crop Growth Simulation Model)在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农业碳中和、农田固碳减排等领域扮演着越来越重要的作用。Decision Support Systems for Agrotechnology Tr…

Java项目接口权限校验的灵活实现

引言 在Java Web开发中,接口权限校验是保护系统资源安全的关键机制。本文将介绍一种灵活、可配置的接口权限校验方案,通过注解驱动和拦截器实现,既能保证安全性,又能灵活控制哪些接口需要校验。 设计思路 实现方案的核心设计要点&…

瀚高DB兼容MySQL if函数

文章目录环境症状问题原因解决方案环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 症状 MySQL if函数在瀚高DB当中没有,源应用在用到if函数时,就会报if函数不存在的错误信息。为此,我们需要根据业…

基于深度学习的胸部 X 光图像肺炎分类系统(六)

目录 结果指标解读 一、为什么选择这些指标? 二、各指标的定义和解读 1. 准确率(Accuracy) 2. 损失(Loss) 3. 精确率(Precision) 4. 召回率(Recall) 三、这些指标…

区块链性能优化策略:从理论到实践

目录 区块链性能优化策略:从理论到实践 1. 引言:区块链性能的挑战 2. 性能评估指标 2.1 核心性能指标 2.2 性能瓶颈分析 3. 分层优化策略 3.1 网络层优化 3.1.1 Gossip协议改进 3.1.2 网络分片 3.2 共识层优化 3.2.1 PBFT优化 3.3 数据层优化 3.3.1 状态树优化 3.3.2 区块数据…

【VLLM】open-webui部署模型全流程

目录 前言 一、租用服务器到服务器连接VScode全流程(可选) 二、下载模型到本地服务器 2.1 进入魔塔社区官网 2.2 选择下载模型 2.3 执行下载 三、部署VLLM 3.1 参考vllm官网文档 3.2 查看硬件要求 3.3 安装vLLM框架 3.4 启动模型服务 方法1:直接启动下载的本地模…

办公自动化入门:如何高效将图片整合为PDF文档

将多张图片合并到一个PDF文件中可以帮助保持特定的顺序和布局,同时确保图像的质量不会因为格式转换而下降。它是免费,不限次数,批量导入也毫无压力。操作堪比发朋友圈:拖图进来 → 选个纸张尺寸 → 点击转换 → 指定保存路径&…

使用宝塔面板搭建 PHP 环境开发一个简单的 PHP 例子

目录一、引言二、准备工作2.1 服务器选择2.2 下载安装宝塔面板三、使用宝塔面板搭建 PHP 环境3.1 登录宝塔面板3.2 选择 Web Server3.3 安装 PHP3.4 安装 MySQL 数据库四、开发一个简单的 PHP 例子4.1 创建 PHP 文件4.2 编写 PHP 代码4.3 设置站点4.4 访问 PHP 页面五、常见问题…

AWS WebRTC:我们的业务模式

拉流、卡录基本流程 设备端(摄像机) 与 App端 是通过 AWS KVS WebRTC 信令服务进行“点对点连接”的,真正的媒体数据(音视频)是通过 WebRTC 的 ICE 通道(P2P 或 TURN)直接传输的,而不…

使用Python,OpenCV,K-Means聚类查找图像中最主要的颜色

使用Python,OpenCV,K-Means聚类查找图像中最主要的颜色 分别把跑图聚类选取1, 2, 3,4, 5, 6, 7,8, 9种主要颜色并绘制colormap颜色图; 效果图 分别把跑图聚类选取3,4, 5,7,9种主要颜色并绘制…

DBAPI 实现分页查询的两种方法

DBAPI 实现分页查询的两种方法 背景 在进行分页查询时,用户通常需要传入当前页码 pageNo 和每页显示的条数 pageSize 参数。根据这两个参数,我们可以从数据库中查询出当前页的数据。以 MySQL 为例,分页查询的 SQL 语句如下: se…

第五天上课 SSLPolicy策略和Network Discovery技术

SSL Policy场景1:拥有自家服务器的私钥,解密访问自家服务器的ssl流量场景2: 内部用户访问互联网的ssl流量,需要解密并重签名Correlation and Compliance相关性与合规性配置相关性与合规性策略,在10.1.1.0/24网络中,当通过Network …

进阶07:C#与通用OPC UA通信范例

本节目标: 1)安装软件,搭建虚拟OPC UA服务器; 2)使用UaExpert,读取OPC UA服务器中的变量; 3)编写Winform程序,读写服务器中变量值,创建订阅触发事件&#…

大模型微调学习笔记(基于讯飞星辰MaaS速学版)

文章目录参考资料说明大模型微调入门微调简介微调步骤数据准备模型选择训练方式效果评估模型部署大模型微调(基于讯飞星辰Maas)构建数据集方法1:预置数据集方法2:创建数据集数据辅助工具数据集划分模型微调数据配置参数配置模型部…

[CSS]让overflow不用按shift可以滚轮水平滚动(纯CSS)

前言 我不爽前端无法直接滚轮横向滚动很久了 明明浏览器可以直接判断 x滚动且y不滚动的时候滚轮事件可以直接操作横向滚动 这个是我探究出来的方法,尤其适合这种很多很多小tag的情况解析 原理是将竖向排列的overflow旋转成横向,实际操作的还是竖向overflow.继而实现鼠标滚轮不用…

截稿倒计时 TrustCom‘25大会即将召开

会议资讯IEEE TrustCom-2025(第24届IEEE计算与通信领域信任、安全与隐私国际会议)是一个展示可信计算、通信、网络和机器学习领域前沿成果的学术平台。会议聚焦计算机系统、网络及人工智能在信任、安全、隐私、可靠性、可依赖性、生存性、可用性和容错性…

Day4.AndroidAudio初始化

1.AudioServer初始化 AudioServer 是 Android 音频系统的核心服务,负责管理音频硬件资源、音频策略调度、跨进程音频通信等核心功能。它由 Init 进程启动,是系统核心服务之一,直接影响音频播放、录音、音效处理等功能的正常运行。 1.1AudioSe…

OSPF 协议(多区域)

1. OSPF 单区域存在的问题① LSDB庞大,占用内存大,SPF计算开销大;② LSA洪泛范围大,拓扑变化影响范围大;③ 路由不能被汇总,路由表庞大,查找路由开销大。2. OSPF 多区域优点① 每个区域独立存储…

R 语言绘制六种精美热图:转录组数据可视化实践(基于 pheatmap 包)

在转录组 Bulk 测序数据分析中,热图是展示基因表达模式、样本聚类关系的核心可视化工具。一张高质量的热图不仅能清晰呈现数据特征,更能提升研究成果的展示效果。本文基于 R 语言的pheatmap包,整理了六种适用于不同场景的热图绘制方法&#x…