【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是用于大规模数…

【docker错误解决系列】 ‘buildx‘ is not a docker command.

文章目录 问题环境解决办法尝试1&#xff1a;修改~/.docker /config.json尝试2&#xff1a;exporter DOCKER_CLI_EXPERIMENTALenabled尝试3&#xff1a;修改/etc/docker/daemon.json --> Experimental成功开启尝试4&#xff1a;开启binfmt尝试5&#xff1a;安装docker-build…

智能风控体系之逻辑回归

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

Jetpack Compose 与 Kotlin 的兼容性对应关系

点击查看&#xff1a;Jetpack Compose Kotlin 的兼容性 官网 声明依赖项 如需添加 Compose Compiler 的依赖项&#xff0c;您必须将 Google Maven 代码库添加到项目中。如需了解详情&#xff0c;请参阅 Google 的 Maven 代码库。 在应用或模块的 build.gradle或者build.grad…

【报错】npm ERR! ERESOLVE could not resolve、certificate has expired

前情提要 使用npm淘宝镜像 https://registry.npm.taobao.org 年前创建的vue3项目npm install 完后没有使用ui写了点杂七杂八的东西&#xff0c;年后看到一篇文章有点兴趣&#xff0c;掏出来准备试一下&#xff0c;本打算安装element-plus 写起来方便点npm install element-plu…

说一下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…

DAY57:动态规划(子序列2)1143、1035、53

Leetcode: 1143 最长公共子序列 1、dp数组定义和下标 dp[i][j]&#xff1a;长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列。 2、确认递推公式 如果text1[i - 1] 与 text2[j - 1]相同&#xff0c;那么找到了一个公共元素&#xff0c;所以d…

Android 开机启动

一、添加权限 <uses-permission android:name"android.permission.RECEIVE_BOOT_COMPLETED"/> 二、写一个广播接收器 public class BootReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {if(Intent.ACT…

数学物理方法笔记——Γ函数

Γ \Gamma Γ函数 0.前言 本文是吴崇试的《数学物理方法》第七章学习笔记。今天是数学物理方法Ⅱ上课的第一天&#xff0c;老师在课上简单复习了一下上个学期数学物理方法I的内容&#xff0c;笔者闲着没事&#xff0c;总觉得梁昆淼先生的书不太够味儿&#xff0c;便开始翻弄起…

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

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

【栈】150. 逆波兰表达式求值

150. 逆波兰表达式求值 解题思路 初始化栈&#xff1a; 创建一个整数栈用于存储操作数。 遍历表达式数组&#xff1a; 对于数组中的每个元素&#xff1a; 如果是运算符&#xff0c;从栈中弹出两个操作数&#xff0c;并根据运算符进行相应的运算&#xff0c;然后将结果压入栈…

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

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

导出docker MySQL中的数据库写一个shell 脚本

安装命令 mysqldump sudo apt update sudo apt install mysql-client编辑脚本内容 export_mysql.sh #!/bin/bash# Docker 容器的 IP 地址 container_ip"172.26.77.246"# MySQL 数据库的用户名和密码 mysql_user"root" mysql_password"your_password…

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…