当前位置: 首页 > article >正文

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

前言

这里我们通过创建一个新的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.kler.cn/a/515095.html

相关文章:

  • VUE elTree 无子级 隐藏展开图标
  • springboot基于微信小程序的商城系统
  • SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别
  • cookie 与 session -- 会话管理
  • 150 Linux 网络编程6 ,从socket 到 epoll整理。listen函数参数再研究
  • npm操作大全:从入门到精通
  • C语言练习(19)
  • 学习笔记——动态规划
  • Math Reference Notes: 反函数
  • 第一讲 方程组的几何解释——以列向量线性组合的角度看方程组
  • NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (一)
  • 【Day24 LeetCode】贪心Ⅱ
  • 数据分库分表和迁移方案
  • 利用ML.NET精准提取人名
  • PyQt5之QCalendarWidget
  • python-leetcode-逆波兰表达式求值
  • jenkins平台使用Login Theme、Customizable Header插件定制修改登陆页图片文字及首页标题
  • 【Let‘s do第四期】DIY液体流量检测仪
  • Apache Hive3定位表并更改其位置
  • 【计算机网络】NAT应用
  • 如何保护 Flask API 的安全性?
  • javaSE.浮点类型
  • 生成对抗网络(GAN)入门与编程实现
  • LeetCode:53. 最大子序和
  • 初始Transformer
  • C++ STL(8)map