欢迎关注「WeiyiGeek」公众号
点击 👇 下方卡片 即可关注我哟!
设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习!
涉及 网络安全运维、应用开发、物联网IOT、学习路径 、个人感悟 等知识
“ 花开堪折直须折,莫待无花空折枝。 ”
作者主页:[ https://www.weiyigeek.top ]
作者博客:[ https://blog.weiyigeek.top ]
作者答疑学习交流群:请关注公众号后回复【学习交流群】
文章目录:
Github 开源项目PR提交
- 提交 PR 流程简述
- 提交 PR 详细步骤
- 关于check不通过的问题如何解决?
0x00 Github 开源项目PR提交
温馨提示:此处实践环境依赖于git工具, 若你没有安装git或者不了解的git进行代码提交过程的朋友,可以参考博主学习【git系列笔记】汇总, 关注 WeiyiGeek 公众号回复【Git学习之路汇总
】即可获得学习资料:
https://www.weiyigeek.top/wechat.html?key=Git学习之路汇总
如何在 Github 上给开源项目提交 PR?
Pull Request (俗称PR): 意思是请求主仓库的所有者从你的仓库中拉取代码合并到主仓库中。
在 GitHub 中如果想参与开源项目开发时,通常会采用进行PR提交方式,当项目管理员收到你提交的PR后,他会对你提交的代码进行审(即查看你写的代码,并考虑其中写的好的和写的不好的地方,然后给你提出意见和建议), 当我们我们的代码通过了审查,它就会被合并到主仓库中,这时候我们的一次代码贡献就算是完成啦!
提交 PR 流程简述:
我们在使用开源项目的过程中,发现一个新的需求,但是开源项目不支持,这时我们就可以在开源项目的基础上实现这个需求,向开源项目提交 PR,让开源项目考虑后续版本是否接纳该需求, 提交 PR 是参与开源项目,为开源项目做贡献的起点。
提交 PR 的过程包括:fork 开源项目到自己的 Github 账户下,clone 项目到自己的本地仓库,建立本地仓库到远程仓库的 remote 链接,新建本地分支,修改代码,提交代码到自己的 Github 远程仓库,新建 PR。
提交 PR 详细步骤
描述: 此处我们向 Github上 how-does-MobaXterm-encrypt-password 开源项目 (它是一个解密MobaXterm存储的Session的工具
) 提交 PR 为例,进行讲解我的 Github的仓库地址 ( https://github.com/weiyigeek ) 欢迎大家来访哟!
步骤 01.浏览器访问Github上how-does-MobaXterm-encrypt-password开源项目( https://github.com/HyperSine/how-does-MobaXterm-encrypt-password), 点击 Fork 复制项目到自己 Github 仓库之中, 点击确定后稍等片刻,此项目便会出现在自己的仓库中。
步骤 02.下载 Fork 复制到自己 Github 仓库中的该 how-does-MobaXterm-encrypt-password 开源项目, 你可采用 Https 或者 ssh 方式拉取,此处我已经使用ssh公钥进行认证,所以采用SSH方式进行clone项目到本地的 github/opensource/ 目录中 。
$ cd github/opensource/
$ git clone git@github.com:WeiyiGeek/how-does-MobaXterm-encrypt-password.git
$ git config --global --list
user.email=master@weiyigeek.top
user.name=WeiyiGeek
core.quotepath=false
步骤 03.查看项目remote 远程链接以及添加上游仓库连接(开源项目仓库),此处上游指的是一开始 fork 的那个项目源。
$ git remote -v
origin git@github.com:WeiyiGeek/how-does-MobaXterm-encrypt-password.git (fetch)
origin git@github.com:WeiyiGeek/how-does-MobaXterm-encrypt-password.git (push)
# 添加上游仓库链接
$ git remote add upstream https://github.com/HyperSine/how-does-MobaXterm-encrypt-password
$ git remote -v
origin git@github.com:WeiyiGeek/how-does-MobaXterm-encrypt-password.git (fetch)
origin git@github.com:WeiyiGeek/how-does-MobaXterm-encrypt-password.git (push)
upstream https://github.com/HyperSine/how-does-MobaXterm-encrypt-password.git (fetch)
upstream https://github.com/HyperSine/how-does-MobaXterm-encrypt-password.git (push)
步骤 04.创建本地 dev-pr 分支, 通常测试功能的代码会在测试分支上,当功能成熟后便可Merge到Master分支上(后续会讲解)
# how-does-MobaXterm-encrypt-password (master)
$ git checkout -b dev-pr
Switched to a new branch 'dev-pr'
步骤 05.切换分支后我们便可以开始开源项目代码修改了,然后提交修改的代码到本地分支,推送本地分支到 Github 远程仓库
# how-does-MobaXterm-encrypt-password (dev-pr)
# 1.使用如下命令添加修改的文件到暂存区
$ git add .
# 2.提交本次修改代码文件到工作区,并描述其本次修改简单情况
$ git commit -m "如果在执行python ShowMobaXterm.py weiyigeek 出现如下错误时,请将第 232 与 231 行的 ConnHostname.encode('ansi'), ConnUsername.encode('ansi') 删除, 如果有中文编码,可以将 encode('ansi') => decode(\"utf8\",\"ignore\")"
[dev-pr 4d1c83c] 如果在执行python ShowMobaXterm.py weiyigeek 出现如下错......,可以将 encode('ansi') => decode(utf8,ignore)
1 file changed, 7 insertions(+), 9 deletions(-)
# 3.将当前分支推送到自己的远程仓库。
$ git push origin dev-pr
Enumerating objects: 7, done.
......
To github.com:WeiyiGeek/how-does-MobaXterm-encrypt-password.git
* [new branch] dev-pr -> dev-pr
步骤 06.在自己的远程仓库便能看刚才push上去的dev-pr分支, 此时点击项目仓库中pull request
选项卡,然后再点击 New pull request,
,进行创建PR。
步骤 07.当上一步完成后,将显示如下页面,此处需要注意的是 compare 处选择刚才提交上来的dev-pr
分支, 然后点击 Create pull request.
亲,文章都看一半了,不关注一下吗?扫描点击卡片即可关注我哟!
步骤 08.填写本次提交PR的标题,以及建议的修改或新增的功能点等,完毕后提交(Create pull request
)就 OK 啦。
步骤 09.提交PR完毕后,我们将会在原开源项目仓库的pull request
查看到我们提交的 PR 代码情况了。
偷偷的告诉你哟?【极客全栈修炼】微信小程序已经上线了,
你可以直接在微信里面直接浏览博主博客了哟,后续将上线更多有趣的功能。
点击 👇 下方卡片,即可进入【极客全栈修炼】微信小程序!
步骤 10.上述演示在dev-pr分支中进行修改并提交了PR,当PR审核通过或者内部测试无问题时,此时将可以把其合并到 master 分支上,操作如下然后在FORK的项目中可以看到已经合并到主分支了。
WeiyiGeek@WeiyiGeek MINGW64 /e/github/opensource/how-does-MobaXterm
-encrypt-password (dev-pr)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
WeiyiGeek@WeiyiGeek MINGW64 /e/github/opensource/how-does-MobaXterm-encrypt-password (master)
$ git merge dev-pr
Updating 462cd00..4d1c83c
Fast-forward
python3/ShowMobaXterm.py | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
WeiyiGeek@WeiyiGeek MINGW64 /e/github/opensource/how-does-MobaXterm-encrypt-password (master)
$ git push
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:WeiyiGeek/how-does-MobaXterm-encrypt-password.git
462cd00..4d1c83c master -> master
补充说明: 关于check不通过的问题如何解决?
描述: github 有代码自己编译和 check 机制,在你提交 pr 的时候,项目可能已经有了比较大的变更(每天都有世界各地的 coder 提 pr),而你没有将分支保持与项目同步,所以有可能会导致 check 失败,pr 被无视。
此时我们前面添加的upstream
上游地址作用就展现出来了,他可以用于远程代码同步,所以每次提交 pr 前,都要先从做代码同步。
过程如下:
# 先 fetch 拉取项目最新代码,执行:
git fetch upstream
# 再 rebase 在另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支,执行:
git rebase upstream/develop
# 再 push develop 上传修改后的代码分支,执行:
git push origin develop
更详细的参与开源项目的开放,建议大家可以参考此篇文章[1]
-
如何参与开源项目 - 细说 GitHub 上的 PR 全过程: https://mp.weixin.qq.com/s/mY-1mDFvBkyHGBgI9KpGOA ↩︎
本文至此完毕,尽情期待下一章节,更多技术文章请关注公众号或访问作者技术站点!
原文地址: https://blog.weiyigeek.top/2022/4-24-655.html
学习书籍推荐
往期发布文章
大神之路-起始篇 | 第1章.计算机科学导论之【基础绪论】学习笔记
大神之路-起始篇 | 第2章.计算机科学导论之【数字系统】学习笔记
大神之路-起始篇 | 第3章.计算机科学导论之【数据存储】学习笔记
大神之路-起始篇 | 第4章.计算机科学导论之【数据运算】学习笔记
大神之路-起始篇 | 第5章.计算机科学导论之【计算机组成】学习笔记
大神之路-起始篇 | 第6章.计算机科学导论之【计算机网络】学习笔记
欢迎各位志同道合的朋友一起学习交流,更多网络安全、系统运维、应用开发、物联网实战、全栈文章,尽在
【作者 WeiyiGeek 博客 - https://blog.weiyigeek.top 】站点!
温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,并请在文章末尾留下您宝贵的经验知识,联系邮箱地址 master@weiyigeek.top 或者关注公众号 WeiyiGeek 联系我。
文章书写不易,如果觉得此篇文章还不错的朋友,请给这篇专栏 【点个赞、投个币、收个藏、关个注、转个发、留个言、赞个助】,这将对我的肯定,我将持续发布更多优质文章,谢谢!
👇👇👇 点击下方【"阅读原文"】,即可获取更多有趣的知识!