【Python程序开发系列】利用git实现协同开发做开源贡献(完整过程)

一、问题

       假如我在gitee或者github上看到了一个优质的项目,我想对这个项目做一些深入的研究,并对其进行优化,并最终提交PR做出贡献。但是这个项目需要或者最好在虚拟机上或服务器上运行,虚拟机或服务器没有IDE这种代码编辑器,这该咋办?你或许会想到本地做代码修改,然后将项目传到虚拟机去运行,这种方法可以,但是比较麻烦,如果需要多次修改,你需要多次传入虚拟机并删除之前的版本。既然项目托管在git平台上,我们可以借助git工具更加便捷的来实现代码的调试与运行。

二、实现过程

2.1 fork这个优质的源项目到我的远程仓库中

直接在源项目(https://code.osssc.ac.cn/oepkgs/upstream-observer)主页点击Forks按钮,即可将这个项目复制到我的远程仓库中。fork之后,这个项目的归属权属于我,地址:(https://code.osssc.ac.cn/wenqiang/upstream-observer)。

2.2 clone项目主分支到我的windows本地

采用以下命令:

git clone git@code.osssc.ac.cn:wenqiang/upstream-observer.git

图片

2.3 本地(windows环境)创建dev分支进行代码编辑

进入到项目文件夹

cd upstream-observer/

此时会默认在你克隆的分支(一般为主分支),创建dev分支并切换

git checkout -b dev

图片

在pycharm中打开项目,配置解释器和虚拟环境(可以用anaconda),可以看到当前的分支和远程分支情况,然后进行开发和调式。

图片

2.4 push到我的远程仓库dev分支

调试完将dev分支push到我的远程仓库dev分支

git add -A
git commit -m ''
git push origin dev:dev

图片

2.5 在虚拟机或服务器上clone我的远程仓库dev分支

git clone -b dev git@code.osssc.ac.cn:wenqiang/upstream-observer.git

2.6 在虚拟机上安装配置相关的运行环境

虚拟机安装anaconda:

创建虚拟环境conda create --name <environment_name>,使用 requirements.txt 文件(项目中一般会有)在虚拟机中安装项目需要的包。1、激活虚拟环境conda activate <environment_name>,2、使用pip install -r requirements.txt命令来安装 requirements.txt 文件中列出的包

或者:

将 Windows 本地的 Anaconda 环境复制到 Linux 虚拟机上。本地使用conda env export --name <environment_name> > environment.yml导出当前环境的详细信息到一个 YAML 文件中存在项目文件夹中,在虚拟机上使用conda env create --file environment.yml命令创建一个新的环境,并使用导出的 YAML 文件来配置环境;使用conda activate <environment_name>命令激活新创建的环境

2.7 在虚拟机上运行项目的主程序脚本

python main.py

2.8 有问题的话,循环3-7步,其中5步clone变为pull,6步可以跳过

2.9 没有问题的话,在我的远程创建PR

PR是自己远端的dev分支-->中央仓库的main分支

三、小结

现在企业的软件项目一般都会托管在git平台上,比如gitlab,本文的协同开发方法也是企业开发人员的一般协同开发方法,读者可以自行领会。

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

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

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

相关文章

2024-02-20(DataX,Spark)

1.Oracle利用DataX工具导出数据到Mysql。Oracle利用DataX工具导出数据到HDFS。 只是根据导入导出的目的地不同&#xff0c;DataX的Json文件书写内容有所不同。万变不离其宗。 书写的Json格式的导入导出规则文件存放再Job目录下的。 2.Spark概念 Apache Spark是用于大规模数…

智能风控体系之逻辑回归

逻辑回归就是这样的一个过程&#xff1a;面对一个回归或者分类问题&#xff0c;建立代价函数&#xff0c;然后通过优化方法迭代求解出最优的模型参数&#xff0c;然后测试验证我们这个求解的模型的好坏。在信贷风控领域最常用的广义线性模型就是逻辑回归。其实逻辑回归线性可分…

说一下JVM类加载机制?

Java中的所有类&#xff0c;都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类&#xff0c;而它的工作就是把class文件从硬盘读取到内存中。 在写程序的时候&#xff0c;我们几乎不需要关心类的加载&#xff0c;因为这些都是隐式装载的&#xff0c;除非我们有特殊…

pc微信逆向最新3.9.8.25版本

朋友让我开发一个关于微信的计数、统计、自动回复功能的机器人&#xff0c;主要是用在win10上面。 先看看结果&#xff01; 之前写过手机端的逆向&#xff0c;PC端逆向很长时间没写了&#xff0c;所以就在网上找了找。基本都是基于3.6&#xff0c;3.7&#xff0c;3.8版本的&a…

虹科方案 | 释放总线潜力:汽车总线离线模拟解决方案

来源&#xff1a;虹科汽车智能互联 虹科方案 | 释放总线潜力&#xff1a;汽车总线离线模拟解决方案 原文链接&#xff1a;https://mp.weixin.qq.com/s/KGv2ZOuQMLIXlOiivvY6aQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #汽车总线 #ECU #汽车网关 导读 传统的…

长短期记忆神经网络

目录 LSTM 神经网络架构 分类 LSTM 网络 回归 LSTM 网络 视频分类网络 更深的 LSTM 网络 网络层 分类、预测和预报 序列填充、截断和拆分 按长度对序列排序 填充序列 截断序列 拆分序列 指定填充方向 归一化序列数据 无法放入内存的数据 可视化 LSTM 层架构 …

Find My资讯|苹果Vision Pro无法通过Find My进行远程定位和发声

苹果 Vision Pro 头显现在已经正式开售&#xff0c;不过根据该公司日前发布的支持文件&#xff0c;这款头显目前缺乏一系列关键查找功能&#xff0c;用户无法在 iCloud 网站或Find My应用中获悉头显的位置&#xff0c;也无法让这款头显远程播放声音。 不过支持文件同时提到 V…

【机器学习】数据清洗之处理重复点

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

C++(18)——适配器概念以及stack、queue、优先队列的模拟实现

上篇文章中&#xff0c;给出了对于模拟实现中功能的补全&#xff0c;本篇文章将优先介绍一个新的容器之后引入什么是适配器&#xff0c;以及适配器的使用方法&#xff0c;再通过适配器的思想来完成对于&#xff0c;、优先级队列_的实现。 目录 1. deque: 1.1 什么是deque&…

Android studio 安装以及第一个程序

一、配置 1、下载JDK&#xff08;JDK&#xff1a;Java Development Kit Java开发工具包&#xff09; 打开Java Downloads | Oracle下载地址下载相应的JDK版本即可&#xff0c;需要注意的是请下载JDK11以上的版本&#xff0c;并且是64位版 2、安装JDK 双击打开已经下载好的安装…

Query Rewrite —— 基于大模型的query扩展改写,PRF+ GRF协同发力减少LLM的幻觉问题(论文)

通过GRF和PRF&#xff0c;可以有效提升召回率&#xff0c;和top的数据质量。两者可以相互互补&#xff0c;发挥更好的作用。 论文&#xff1a;Generative and Pseudo-Relevant Feedback for Sparse, Dense and Learned Sparse Retrieval 什么是PRF &#xff1f; Pseudo-relevan…

python在flask中的请求数据“无限流”

文章目录 一、问题描述二、解决方案 一、问题描述 在flask请求中&#xff0c;有个需求是让调用方一直调接口&#xff0c;并立马返回&#xff0c;而接口方缓存请求&#xff0c;依次执行。 二、解决方案 from flask import Flask, request, jsonify from queue import Queue i…

新年伊始,VR全景释放“强信号”,可以结合哪些行业?

一年之计在于春&#xff0c;各行各业都想抢占在经济的第一线&#xff0c;那么如何抓住新一轮科技革命和产业变革新机遇呢&#xff1f;VR全景释放了“强信号”。对于大部分实体行业来说&#xff0c;都会有VR全景的制作需求&#xff0c;租房买房的&#xff0c;可能都见识过线上VR…

【JGit】分支管理实践

本文紧接【JGit】简述及学习资料整理。 以下梳理了使用 JGit 进行 Git 操作的实践 JGit实践 主函数 public static void main(String[] args) throws Exception {String localDir "D:\\tmp\\git-test\\";String gitUrl "http://192.168.181.1:3000/root/g…

如何邀请媒体参加活动报道?媒体邀约的几大步骤?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 邀请媒体参加活动报道通常需要发送邀请函、提供详细活动信息&#xff0c;并通过电话或邮件进行跟进确认。 在邀请媒体之前&#xff0c;应该制定一个详细的媒体规划表&#xff0c;包括拟…

高级统计方法 第2次作业

概念 1. &#xff08;a&#xff09; 光滑度高的好&#xff0c;样本足够多光滑度越高就越能表征真实情况&#xff0c;也能对预测变量更好的预测。 &#xff08;b&#xff09; 光滑度低的好&#xff0c;因为可能“过拟合”&#xff0c;一些误差大的数可能会较大的影响到预测…

Code-Audit(代码审计)习题记录

介绍&#xff1a; 自己懒得搭建靶场了&#xff0c;靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习&#xff0c;可以随地访问&#xff0c;本文所有的题目均来源于网站HSCSEC-Code Audit 1、习题一 题目内容如下&#xff1a; 1…

FX110网:easyMarkets易信被评为2023最佳外汇经纪商

easyMarkets 易信目前正在庆祝其进入行业第 23 周年&#xff0c;很高兴地宣布其在 2023 年 TradingView 经纪商奖中被授予“最佳外汇经纪商”称号&#xff0c;这是其第 51 次荣获殊荣奖项。 “我们的共同使命是为交易者提供最好的交易环境和交易工具。 得益于我们全球社区的广泛…

手把手将 VSCode 快捷键修改为 Eclipse 的快捷键

1.在 vscode 上方搜索栏输入 >keyboard 2. 选择图中红框的内容 3.将Eclipse的常用快捷键复制进去 { "key": "ctrld", "command": "-editor.action.addSelectionToNextFindMatch", "when": "editorFocus" }, {…

微信小程序video 点击自动全屏播放

//因为这个地址可能是图片也可能是视频 点击 图片可以预览&#xff0c;点击视频可放大全屏自动播放。 代码如下 <view v-else :class{contentImg: x.picture.length0} style"margin-top: 10px;"v-for"(x1, y1) in x.picture" :key"y"><…