如何使用Python脚本将本地项目上传到 GitHub

news2025/1/23 9:42:09

前言

这里我们通过创建一个新的github仓库,来测试我们的脚本能否上传我们本地的项目,并且进行更新。首先你需要先安装 Git,关于这部分我好像没有记录过,这里我搜索看了一下,这篇博客写的Git安装详解应该是比较齐全的,这里我们主要来展示我们的脚本能否上传。

创建测试仓库

框选的部分看一下, 然后我们将创建的项目下载到本地来。

将其解压到本地后,通过pycharm打开,然后将.gitignore,LICENSE,README.md等文件移动到Upload_github(名字叫什么无所谓),然后创建一些代码和文件进行测试。这些就是我们需要上传的内容了。

上传脚本

run_git_command 会运行一个 Git 命令,并捕获其输出。如果命令执行失败(即返回码不为0),则打印错误信息;否则,打印命令的标准输出。

upload_to_github 将指定的本地文件夹上传到 GitHub 仓库。

import os
import subprocess

def run_git_command(command, cwd=None):
    """运行 git 命令,并返回输出"""
    result = subprocess.run(command, cwd=cwd, text=True, capture_output=True)
    if result.returncode != 0:
        print(f"Error running command: {command}")
        print(result.stderr)
    else:
        print(result.stdout)

def upload_to_github(local_folder, repo_url, commit_message="Initial commit"):
    """将文件夹上传到 GitHub 仓库"""
    # 获取目标文件夹的绝对路径
    local_folder = os.path.abspath(local_folder)

    if not os.path.exists(local_folder):
        print(f"The folder {local_folder} does not exist.")
        return

    # 进入目标文件夹
    os.makedirs(local_folder, exist_ok=True)

    # 初始化 Git 仓库
    run_git_command(["git", "init"], cwd=local_folder)

    # 配置用户信息(如果没有全局配置)
    run_git_command(["git", "config", "user.name", "Auorui"], cwd=local_folder)
    run_git_command(["git", "config", "user.email", "2165648225@qq.com"], cwd=local_folder)

    # 强制将本地分支设置为 main
    run_git_command(["git", "branch", "-M", "main"], cwd=local_folder)

    # 添加所有文件
    run_git_command(["git", "add", "."], cwd=local_folder)

    # 提交更改
    run_git_command(["git", "commit", "-m", commit_message], cwd=local_folder)

    # 删除现有的远程 origin(如果存在)
    run_git_command(["git", "remote", "remove", "origin"], cwd=local_folder)

    # 设置远程仓库
    run_git_command(["git", "remote", "add", "origin", repo_url], cwd=local_folder)

    # 拉取远程仓库的 main 分支,使用 rebase 来避免合并提交
    run_git_command(["git", "pull", "--rebase", "origin", "main"], cwd=local_folder)

    # 推送到 GitHub 的 main 分支
    run_git_command(["git", "push", "-u", "origin", "main"], cwd=local_folder)

    print(f"Files from {local_folder} have been successfully uploaded to GitHub.")


if __name__ == "__main__":
    # 目标文件夹路径(替换为你的文件夹路径)
    local_folder = r'D:\PythonProject\Upload-Warehouse-Test-main\Upload_github\myfloder'
    # 你的 GitHub 仓库 URL
    repo_url = "git@github.com:Auorui/Upload-Warehouse-Test.git"
    # 提交信息(可选)
    commit_message = "Upload dataset and code"
    # 调用上传函数
    upload_to_github(local_folder, repo_url, commit_message)

后面可以将修改的内容直接添加或者替换掉即可。此处只需要修改目标的文件夹路径,和你的github的SSH。

下图为经过测试后,成功添加到指定的仓库中了。 

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

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

相关文章

Day 15 卡玛笔记

这是基于代码随想录的每日打卡 222. 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值&#x…

IO进程----进程

进程 什么是进程 进程和程序的区别 概念: 程序:编译好的可执行文件 存放在磁盘上的指令和数据的有序集合(文件) 程序是静态的,没有任何执行的概念 进程:一个独立的可调度的任务 执行一个程序分配资…

【Postgres_Python】使用python脚本将多个PG数据库合并为一个PG数据库

需要合并的多个PG数据库表个数和结构一致,这里提供一种思路,选择sql语句insert插入的方式进行,即将其他PG数据库的每个表内容插入到一个PG数据库中完成数据库合并 示例代码说明: 选择一个数据库导出表结构为.sql文件&#xff08…

微软预测 AI 2025,AI Agents 重塑工作形式

1月初,微软在官网发布了2025年6大AI预测,分别是:AI模型将变得更加强大和有用、AI Agents将彻底改变工作方式、AI伴侣将支持日常生活、AI资源的利用将更高效、测试与定制是开发AI的关键以及AI将加速科学研究突破。 值得一提的是,微…

《Java核心技术 卷II》获取Web数据提交表单数据

提交表单数据 了解即可,直接上案例 package 第4章网络.post;import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.Reader; import java.net.CookieHandler; import java.net.CookieManager; import java.net.Co…

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…

JavaScript —— 变量与运算符

变量与常量 let&#xff1a;用来定义变量&#xff0c;可以只声明不定义&#xff1b; 例如&#xff1a; <script type"module">let a; // 只声明不定义let x 2, name "kitty"; // 定义若干个变量let d { // 定义一个对象&#xff0c;类似于p…

YOLO-cls训练及踩坑记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、模型训练 二、测试 三、踩坑记录 1、推理时设置的imgsz不生效 方法一&#xff1a; 方法二&#xff1a; 2、Windows下torchvision版本问题导致报错 总结 前…

Android BitmapShader简洁实现马赛克,Kotlin(一)

Android BitmapShader简洁实现马赛克&#xff0c;Kotlin&#xff08;一&#xff09; 这一篇&#xff0c; Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果&#xff0c;Kotlin&#xff08;3&#xff09;-CSDN博客 基于PorterDuffXfermode实现马…

全球化趋势与中资企业出海背景

1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革&#xff0c;新兴经济体崛起&#xff0c;全球产业链重塑&#xff0c;中资企业出海面临新机遇与挑战。据世界银行数据&#xff0c;新兴市场和发展中经济体在全球 GDP 中占比已超 40%&#xff…

无人机在城市执法监管中的应用:技术革新与监管挑战

随着科技的不断进步&#xff0c;无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势&#xff0c;正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…

总结6..

背包问题的解决过程 在解决问题之前&#xff0c;为描述方便&#xff0c;首先定义一些变量&#xff1a;Vi表示第 i 个物品的价值&#xff0c;Wi表示第 i 个物品的体积&#xff0c;定义V(i,j)&#xff1a;当前背包容量 j&#xff0c;前 i 个物品最佳组合对应的价值&#xff0c;同…

【2024年 CSDN博客之星】我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾

我的2024年创作之旅&#xff1a;从C语言到人工智能&#xff0c;个人成长与突破的全景回顾 引言 回望2024年&#xff0c;我不仅收获了技术上的成长&#xff0c;更收获了来自CSDN平台上无数粉丝、朋友以及网友们的支持与鼓励。在这条创作之路上&#xff0c;CSDN不仅是我展示技术成…

等变即插即用图像重建

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 即插即用算法为解决反问题成像问题提供了一个流行的框架&#xff0c;该框架依赖于通过降噪器隐式定义图像先验。这些算法可以利用强大的预训练降噪器来解决各种成像任务&#xff0c;从而避免了在每…

MLCC电容、铝电解电容寿命计算及影响分析

如何评价MLCC的寿命 MLCC的寿命受温度条件和施加的DC电压条件影响&#xff0c;可以用下列加速方程式来表示。 例如&#xff0c;85oC,16V条件的高温负荷测试是比65oC4V环境高2,374.16倍的加速测试&#xff0c;MTTF(测试样本数40pcs,可信度60%情况下)预计为103,562,200h&#…

集成学习算法

集成学习算法 一、集成学习介绍 二、随机森林算法 1、Bootstrap随机抽样 2、Bagging 算法 3、训练算法 4、代码实现 三、Boosting 算法 AdaBoost 算法 1、强分类器与弱分类器 2、训练算法 3、代码实现 一、集成学习介绍 集成学习是通过多个模型的组合形成一个精度更…

算法6(力扣148)-排序链表

1、问题 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 2、采用例子 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 3、实现思路 将链表拆分成节点&#xff0c;存入数组使用sort排序&#xff0c;再用reduce重建链接 4、具…

DNA结合之Motif_1:CNN

1&#xff0c;首先可以识别在KO前后的motif——》由CNN模型做出识别&#xff0c;看看这个有没有什么灵感 2&#xff0c;ZNF143等都可以使用来识别 3&#xff0c;暂时只使用单个peak文件&#xff0c;后期可以使用ENCODE中所有的对应的TF的peak文件 1&#xff0c;文件解压之后…

【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)

文章目录 一、InputAction简介1、InputAction是什么&#xff1f;2、示例 二、InputAction参数相关1、点击齿轮1.1 Actions 动作&#xff08;1&#xff09;动作类型&#xff08;Action Type&#xff09;&#xff08;2&#xff09;初始状态检查&#xff08;Initial State Check&a…

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练&#xff08;归纳&#xff09;和预测&#xff08;演绎&#xff09; 归纳: 从具体案例中抽象一般规律…