鱼C论坛

 找回密码
 立即注册
查看: 2878|回复: 7

[已解决]如何用python脚本来远程拉取git代码,并克隆到本地目录?

[复制链接]
发表于 2022-8-24 16:09:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 bendankill 于 2022-8-29 17:34 编辑

''''''
已经搞定输入账号密码了,但是如何建立远程链接,并且执行拉取代码操作还无从下手,跪求大佬指教。(需要注释!)

【需求】
1,从某个url 拷贝到本地某个位置;(是否需要判断拉取到新内容 或 当前是最新,打印出来)

自学中……
自学中……
自学中……
'''
print('-' *50)


# 如果等到我代码跑起来了,还没人给出方案,就把我的玩具代码贴上来。


print("-------------------------------------------------begin_2022-8-29 17:32:47_玩具代码-------------------------------------------------")
    try:
        # 判断目录是否存在,不存在就克隆,存在就更新。
        # 如果目录存在,就操作git更新;如果不存在,就克隆到本地。

        # 判断是否存在本地目录
        if os.path.exists(GIT_LOCAL_PATH):
            print("目录存在,执行更新")
            # 执行pull同步操作到本地仓库
            repo = git.Repo(GIT_LOCAL_PATH)
            remote = repo.remote()
            remote.pull()
            print("远程仓库同步到本地更新成功!")

        # 不存在本地目录时,就执行克隆
        else:
            # 请输入是否确定克隆到本地目录GIT_LOCAL_PATH

            # 克隆到本地目录
            print("从远程仓库克隆到本地目录...")
            git.Repo.clone_from(url=GIT_REMOTE_URL, to_path=GIT_LOCAL_PATH)

            print("拷贝成功!")
        return True
print("---------------------------------------------------end_2022-8-29 17:32:47_玩具代码-------------------------------------------------")
最佳答案
2022-8-24 18:44:41
bendankill 发表于 2022-8-24 17:42
您好,很抱歉我没看懂。。。

我目前搜到的相关知识,都要有个本地地址的。您的这个好像没有,再一个我 ...

# 导入urllib模块,用于网络连接
import urllib.request
# 导入zipfile模块,用于解压zip
import zipfile
# 导入os模块,用于删除zip文件
import os

# 爬取github
url = "https://github.com/帐号/仓库/archive/refs/heads/main.zip"
response = urllib.request.urlopen(url)
# 将爬取下来的zip文件保存
with open("main.zip","wb") as f:
        f.write(response.read())

# 解压爬取下来的zip文件
zip_file = zipfile.ZipFile("main.zip")
for i in zip_file.namelist():
        zip_file.extract(i)

# 关闭zip
zip_file.close()
# 删除zip文件
os.remove("main.zip")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-24 16:26:32 | 显示全部楼层
本帖最后由 hrpzcf 于 2022-8-24 16:31 编辑
subprocess.run(["git","clone", "https://xxxx"])
subprocess.run(["git","pull", "origin", "master"])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-24 16:34:37 | 显示全部楼层
import requests

url = "https://github.com/帐户/仓库/archive/refs/heads/main.zip"
response = requests.get(url)
if response.status_code == 200:
        with open("main.zip","wb") as f:
                f.write(response.content)
else:
        print("Faild.")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-24 17:42:48 | 显示全部楼层

您好,很抱歉我没看懂。。。

我目前搜到的相关知识,都要有个本地地址的。您的这个好像没有,再一个我也不太知道这段代码执行的意义,能否添加一下注释。

抱歉,我纯小白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-24 17:44:39 | 显示全部楼层

您好,我这个函数的用法和意义还没学到,看起来挺简单的就两行,但还是没看懂。。。能否帮我注释下,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-24 18:38:28 From FishC Mobile | 显示全部楼层
bendankill 发表于 2022-8-24 17:44
您好,我这个函数的用法和意义还没学到,看起来挺简单的就两行,但还是没看懂。。。能否帮我注释下,谢谢 ...

这个是直接运行git命令克隆和拉取代码,需要安装git,回答的时候没注意看可能不符合你的要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-24 18:44:41 | 显示全部楼层    本楼为最佳答案   
bendankill 发表于 2022-8-24 17:42
您好,很抱歉我没看懂。。。

我目前搜到的相关知识,都要有个本地地址的。您的这个好像没有,再一个我 ...

# 导入urllib模块,用于网络连接
import urllib.request
# 导入zipfile模块,用于解压zip
import zipfile
# 导入os模块,用于删除zip文件
import os

# 爬取github
url = "https://github.com/帐号/仓库/archive/refs/heads/main.zip"
response = urllib.request.urlopen(url)
# 将爬取下来的zip文件保存
with open("main.zip","wb") as f:
        f.write(response.read())

# 解压爬取下来的zip文件
zip_file = zipfile.ZipFile("main.zip")
for i in zip_file.namelist():
        zip_file.extract(i)

# 关闭zip
zip_file.close()
# 删除zip文件
os.remove("main.zip")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-5 15:21:38 | 显示全部楼层

老哥,我终于找到你的这个方法了,厉害啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 18:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表