开发技能 | 如何在 Github 上给开源项目提交 PR?

欢迎关注「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 仓库之中, 点击确定后稍等片刻,此项目便会出现在自己的仓库中。

f17b82325720b29228ad02cc67442be1.png

步骤 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。

af9ec4568010fcacfd5f343a43e1da58.png

步骤 07.当上一步完成后,将显示如下页面,此处需要注意的是 compare 处选择刚才提交上来的dev-pr 分支, 然后点击 Create pull request.

ab3194a2f4274a21ab279615b50e8d65.png

亲,文章都看一半了,不关注一下吗?扫描点击卡片即可关注我哟!

e786a8e65e68152255b38b5e062271c5.jpeg

步骤 08.填写本次提交PR的标题,以及建议的修改或新增的功能点等,完毕后提交(Create pull request)就 OK 啦。

6b3820d076ec2bd7a6af824ae812727e.png

步骤 09.提交PR完毕后,我们将会在原开源项目仓库的pull request 查看到我们提交的 PR 代码情况了。

d619909bb980c2d658a3891fecfa5c8a.png

偷偷的告诉你哟?极客全栈修炼】微信小程序已经上线了,

你可以直接在微信里面直接浏览博主博客了哟,后续将上线更多有趣的功能。

点击 👇 下方卡片,即可进入【极客全栈修炼】微信小程序!

步骤 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

822e0e46c190fb70f829adf4e7cf824b.png

补充说明: 关于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]


  1. 如何参与开源项目 - 细说 GitHub 上的 PR 全过程: https://mp.weixin.qq.com/s/mY-1mDFvBkyHGBgI9KpGOA ↩︎

本文至此完毕,尽情期待下一章节,更多技术文章请关注公众号或访问作者技术站点!

原文地址: https://blog.weiyigeek.top/2022/4-24-655.html


f7ca4c12bfdf04771dba321c839cc906.png 学习书籍推荐66e0f5248679f48a450e1e5b4cdd5c5c.png


8a87d5fe7c62a90fe365e3f7a2a58354.png 往期发布文章14188da02e51061367972b422f887f70.png

大神之路-起始篇 | 第1章.计算机科学导论之【基础绪论】学习笔记

大神之路-起始篇 | 第2章.计算机科学导论之【数字系统】学习笔记

大神之路-起始篇 | 第3章.计算机科学导论之【数据存储】学习笔记

大神之路-起始篇 | 第4章.计算机科学导论之【数据运算】学习笔记

大神之路-起始篇 | 第5章.计算机科学导论之【计算机组成】学习笔记

大神之路-起始篇 | 第6章.计算机科学导论之【计算机网络】学习笔记

欢迎各位志同道合的朋友一起学习交流,更多网络安全、系统运维、应用开发、物联网实战、全栈文章,尽在

【作者 WeiyiGeek 博客 - https://blog.weiyigeek.top 】站点!

温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,并请在文章末尾留下您宝贵的经验知识,联系邮箱地址 master@weiyigeek.top 或者关注公众号 WeiyiGeek 联系我。

文章书写不易,如果觉得此篇文章还不错的朋友,请给这篇专栏 【点个赞、投个币、收个藏、关个注转个发留个言、赞个助】,这将对我的肯定,我将持续发布更多优质文章,谢谢!

14647f7f6e140c1abc8b3848a4420d7a.gif

👇👇👇 点击下方【"阅读原文"】,即可获取更多有趣的知识!

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈工程师修炼指南

原创不易,赞赏鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值