Python实现自动化GIT提交的示例代码

 更新时间:2025年07月30日 10:08:55   作者:TIM老师  
在日常开发中,我们经常需要频繁地向 Git 仓库提交代码,本文将介绍如何使用 Python 脚本自动化完成 Git 提交流程,让开发更高效,希望对大家有所帮助

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

实现思路

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

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

完整代码

import subprocess
import sys
from datetime import datetime

def 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)
        return
    print("✅ 检测到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}")
        return
    print("✅ 所有文件已添加。")
    
    # 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}")
            return
    else:
        print("✅ 提交成功!")
    
    # 6. 推送到远程仓库
    print("\n📤 正在推送到远程仓库...")
    success, output = run_command("git push")
    if not success:
        print(f"❌ 推送失败: {output}")
        print("💡 请检查网络连接、远程仓库地址和认证信息(如SSH密钥或Token)。")
        return
    
    print("✅ 推送成功!")
    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 = None
    if 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、编辑器或作为定时任务运行,进一步提升开发效率!

到此这篇关于Python实现自动化GIT提交的示例代码的文章就介绍到这了,更多相关Python自动化GIT提交内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用Pillow添加水印

    Python使用Pillow添加水印

    这篇文章主要为大家详细介绍了Python使用Pillow添加水印,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 跟老齐学Python之集成开发环境(IDE)

    跟老齐学Python之集成开发环境(IDE)

    IDE的全称是:Integrated Development Environment,简称IDE,也稱為Integration Design Environment、Integration Debugging Environment,翻译成中文叫做“集成开发环境”,在台湾那边叫做“整合開發環境”。
    2014-09-09
  • Python sys.path详细介绍

    Python sys.path详细介绍

    这篇文章详细介绍了Python sys.path,有需要的朋友可以参考一下
    2013-10-10
  • 利用python写api接口实战指南

    利用python写api接口实战指南

    api接口在我们开发中的重要性相信大家都这篇文章主要给大家介绍了关于利用python写api接口实战的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • CentOS7下python3.7.0安装教程

    CentOS7下python3.7.0安装教程

    这篇文章主要为大家详细介绍了CentOS7下python3.7.0安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 深入理解python多线程编程

    深入理解python多线程编程

    进程是资源分配的最小单位,他是操作系统进行资源分配和调度运行的基本单位。通俗理解:一个正在运行的一个程序就是一个进程,本文重点给大家介绍python多线程编程的相关知识,感兴趣的朋友一起看看吧
    2021-04-04
  • Python原始字符串(raw strings)用法实例

    Python原始字符串(raw strings)用法实例

    这篇文章主要介绍了Python原始字符串(raw strings)用法实例,在使用Python进行字符串处理的过程中非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • Numpy中vstack()和hstack()的使用方式

    Numpy中vstack()和hstack()的使用方式

    文章详细介绍了Numpy中vstack()和hstack()两种数组拼接方法,vstack()是垂直堆叠数组,需保证除第一轴(行)外,数组形状相同,hstack()是按顺序堆叠数组,需保证除第二轴(列)外,数组形状相同,两者都可通过堆叠给定数组最后形成至少二维的数组
    2024-10-10
  • 如何在Windows中安装多个python解释器

    如何在Windows中安装多个python解释器

    这篇文章主要介绍了如何在Windows中安装多个python解释器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 详解Pytest测试用例的执行方法

    详解Pytest测试用例的执行方法

    大家应该都知道pytest是一个非常成熟的全功能的Python测试框架,接下来通过本文给大家分享Pytest测试用例的执行方法,感兴趣的朋友一起看看吧
    2021-05-05

最新评论