本文以 dlink 项目为例。

1. fork

第一步是打开 github 上的项目地址,然后点击页面右上角的 fork 按钮,将项目 fork 到自己账号的仓库,记得登录自己的 github 账号。具体看下面图示。


这个页面,不需要修改什么参数,保持默认即可。

fork 成功之后,网页就会跳转到自己仓库下的 dlink 项目页面。

2. idea 克隆项目

打开自己的 idea ,然后从 “来自版本控制获取” 来打开克隆自己仓库下的项目到本地。

这一步也可以使用 git 命令进行操作,不过 idea 界面化操作更简单,git 命令在这儿就不做演示了。

3. 完成一些配置

克隆完成后,打开 idea 下面的终端,输入一些 git 命令来进行一些必要的操作。

3.1. 检查 github 账号信息

git config --global -l

得到如下结果则没问题

user.name=your-user-name
user.email=your-email-address
core.quotepath=false
http.lowspeedlimit=0
http.lowspeedtime=999999
http.sslverify=false

一定要看好最上面的两项,要和自己的 github 账号里面的信息保持一致,否则给项目贡献了代码之后,虽然 github 项目上有贡献记录,但是自己的账号却不会出现在贡献者列表。

如果有信息后面显示为空,或者是和自己的 github 账号里面的信息不一致,则可以使用下面的命令进行修改。

git config --global user.name "your-user-name"
git config --global user.email "your-email-address"

3.2. 增加远程仓库

查看远程仓库信息:

git remote -v

第一次运行该命令,结果应该是只要你自己仓库的信息,如下:

origin  https://github.com/ziqiang-wang/dlink.git (fetch)
origin  https://github.com/ziqiang-wang/dlink.git (push)

增加远程仓库:

git remote add upstream https://github.com/DataLinkDC/dlink.git

命令解释:

  • add:固定写法,表示增加远程仓库。
  • upstream,远程仓库的名称,可以自己命令,以后会用到这个名称。
  • https://github.com/DataLinkDC/dlink.git:远程仓库的 git 地址。

查看远程仓库信息:

git remote -v

上面增加远程仓库成功的话,运行结果应该如下;

origin  https://github.com/ziqiang-wang/dlink.git (fetch)
origin  https://github.com/ziqiang-wang/dlink.git (push)
upstream        https://github.com/DataLinkDC/dlink.git (fetch)
upstream        https://github.com/DataLinkDC/dlink.git (push)

最后获取远程项目的所有变更:

git fetch upstream

upstream:这个就是上面添加的远程仓库的名称。

成功之后,结果如下:

remote: Enumerating objects: 378, done.
remote: Counting objects: 100% (377/377), done.
remote: Compressing objects: 100% (127/127), done.
Receiving objects: 100% (378/378), 154.80 KiB | 29.00 KiB/s, done. 1Resolving deltas: 100% (196/196), completed with 22 local objects.
From https://github.com/DataLinkDC/dlinkd10005ba..4eb1afc1  dev        -> upstream/dev0e53d225..6dde9244  dev-tenant -> upstream/dev-tenant

如果由于网络远程造成超时失败等问题,重复运行上面的命令即可。

4. 克隆分支

现在就可以在项目代码的基础上开始进行代码修改了。

修改代码之前,要先克隆自己想要提交代码的远程分支。如果想要基于最新代码进行开发,那就 checkout dev 分支,如果想要基于某个版本的分支进行修改,那就 checkout 对应版本的分支。

5. 提交 pr

此时,你已经修改了很多代码,并且本地也进行了很多测试,然后就可以提交更改,最后提交 pr 了。

5.1. 获取远程项目的所有变更

git fetch upstream

5.2. rebase 远程项目更改

这一步,我同样以 idea 界面操作来演示。

比如,现在我们想将自己本地已经修改的分支代码提交到远程仓库的 dev 分支,那就需要将远程仓库的 dev 分支代码 rebase 到自己的本地分支,下面是 idea 中的操作。

如果你的 idea 界面为英文界面的话,可以安装“Chinese(Simplified)Language Pack/中文语言包”插件,以切换中文界面。英文界面的变基rebase

5.3. 提交修改到自己的仓库

操作成功之后,就可以将自己修改的代码提交到自己的仓库,最后再提交 PR 了。

从这个界面中,可以看到自己修改过的代码,要注意,只提交自己想要提交的那些代码文件,不要提交一些不需要提交的文件。

同时也可以根据修改的内容,将修改过的文件放到不同的提交点里面,也就是每次提交,只提交当前提交点涉及到的文件。之后项目管理员进行代码 review 时,会更清晰。

进入 git 窗口,然后切换到自己的本地分支,就可以看到自己刚才提交的多个提交点了,之后就可以将这个分支所有更改提交到自己的仓库了。

一定要注意,这一步是将更改提交到自己的仓库,最好是进行强制推送,避免有些提交点没有提交到自己仓库对应的分支下。

5.4. 提交 PR

打开远程仓库,然后点击“Pull requests”,就会出现下面的界面

然后点击“Compare & pull request”,或者是“New pull request”进入提交 PR 的界面

填写好一些必要的信息之后,就可以进行 PR 的提交了。

提交 PR 只有,管理员可能会对 PR 进行一些提问或讨论,到时候直接回复即可。

5.5. 其他

每次提交 PR 之前,都需要通过 git fetch upstream 命令来获取远程仓库的所有更改,然后将远程仓库的 dev 分支 rebase 到自己的本地分支,然后提交更改,否则最后提交 PR 时,可能会显示代码有冲突。

给github项目贡献代码详细步骤相关推荐

  1. 给github项目贡献代码的操作流

    在github开源项目上和别人协同办公,或者贡献代码,可以学会并掌握如下这套操作流,让你的工作事半功倍. 1,克隆master代码到本地 git clone https://github.com/ex ...

  2. 大白话讲解如何给github上项目贡献代码

    本文献给对git很迷茫的新手,注意是新手,但至少会点基本操作,有点基本概念的新手,我不会从怎么用github和git是什么开始讲的.如果作为新手你看书又看不进去,原理又太复杂,又没有直接了当告诉我们怎 ...

  3. 开源项目贡献代码流程

    原来在github上断断续续给许多项目提交过pr(pull requests),比较有成就感的是参与的datax-web项目,目前已近1.8k star.现将开源项目贡献代码流程成文,方便后续更多的同 ...

  4. 给开源项目贡献代码的经历

    工作好几年了还没有成为一名开源贡献者,实属失败,最近进行了人生中的第一次给开源项目贡献代码,记录一下.温馨提示:文章较长,不想听我啰嗦的,直接看最后总结. 背景 作为一个 技术开发者 怎么能没有属于自 ...

  5. 【手把手指导】给开源项目贡献代码

    很多新人学习了技术,但是没有地方施展. 问题不大,找几个开源项目来参加就可以了,需要开源项目磨练的可以联系学委. 本文重点讲解如何快速的给开源项目贡献代码. 首先你必要要有一个GitHub账号(或者G ...

  6. 如何给开源项目贡献代码

    和我比较熟的朋友知道我前几天给prometheus贡献了代码,这是第一次给一个比较大的开源项目贡献代码,后来一了解发现,我滴妈,好多人都不会发起PR请求来合并代码,这次我就好好写写,给大家一个参考. ...

  7. 第一次给知名项目贡献代码,有点紧张

    大家好,我是鱼皮的小老弟阿巴,大家也可以叫我小阿巴. 我也对编程非常感兴趣,但还是小白一枚.这几天放假来哥哥家玩,本来想着鱼皮哥哥学计算机.设备多,会带我打打游戏什么的.结果没想到刚到他家,就问我编程 ...

  8. 给开源项目贡献代码_您可以为开源做出6种非代码贡献

    给开源项目贡献代码 贡献开源! 履历表看起来很棒! 这是可喜的工作! 在您的整个职业生涯中,您可能听说过很多人做出过这些陈述或类似的陈述. 他们没有错-为开源做贡献是一个多方面的有益工作-但是,当软件 ...

  9. spring项目打包发布详细步骤

    spring项目打包发布详细步骤 1.添加pom文件配置 <packaging>jar</packaging> 2.在IDEA中打开 Run - > Edit Confi ...

最新文章

  1. 基于Java的疫情防控管理系统
  2. 初探swift语言的学习笔记二(可选类型?和隐式可选类型!)
  3. Java多线程学习二十七:AtomicInteger 在高并发下性能不好,如何解决?为什么?
  4. 解决Spring JdbcTemplate调用queryForObject()方法结果集为空时报异常
  5. C++的三种封装层级
  6. python图像处理笔记-八-针孔照相机模型与照相机标定
  7. mysql可视化工具
  8. 用 MQL5 连接 EA 交易程序和 ICQ
  9. 【HTML】HTML浏览器打印自定义页眉页脚
  10. 谨防企业管理者察人不慎,满盘皆输
  11. smtplib库:Python使用QQ邮箱发送邮件
  12. 基于Android的手机音乐播放器的设计
  13. 将自己电脑做成服务器让别人访问(不是局域网)
  14. 猴子学会意念打字,马斯克脑机接口最新演示,预计6个月内人体试验
  15. 腾讯云tcp架构考试涉及到哪些知识点?腾讯云是什么?
  16. 阿里百川HotFix2.0热修复初体验
  17. php随礼取数,同事结婚我随礼八百,我结婚他随礼二百,三天后收到他的微信楞了...
  18. 定金不等于订金交预订款要慎重
  19. derby和mysql_关于derby数据库(新手教程)
  20. 麓言科技电商详情页怎么制作

热门文章

  1. 逻辑思维-03取水问题
  2. 基于php的教材管理系统
  3. php listbox,ListBox 控件
  4. ArcGIS 已知某点经纬度,如何制以该点为中心的10km的矢量shp文件
  5. Material Design(1)
  6. Clark与Park变换推导
  7. 字号-磅-毫米对应关系
  8. 自学C++——自定义数据类型
  9. xheditor使用方法记录
  10. 【QT学习】实现鼠标滑动触发的轮播图