阅读GitHub源码的正确打开方式
前言
近来发现阅读开源项目上手就整最新的代码不合适,缺少项目迭代的具体实现过程,想着若是可以看到针对问题的提交代码就好了,所以就有了本篇博客。
以文主要涉及:如何fork开源项目,如何保证本地仓库代码更新到最新版本。
本文以开源项目Flink为例进行说明。
1、整体流程
fork项目 =====> 下载本地 ======> 导入IDEA , 配置git获取代码提交过程 =====>更新代码
2、fork项目
为了fork GitHub上的开源项目,首先需要一个GitHub的账号,注册过程可以百度,这里不详细展开。
在GitHub上找到所需的开源项目,点击右上角的fork,会自动地在自己的GitHub上创建一个repository,具体如下:
3、下载代码
为了获取contributer的提交过程,这里使用建议使用git在自己的仓库里获取源码。
直接在git clone 原项目的URL也是可以,但是若是你想贡献代码到原项目了?直接提代码到原开源项目上去提肯定不行的(当然也不是一定不行,仅说一般情况)。提交代码到原项目上的流程一般是:提交代码到个人的GitHub仓库,然后new pull request到原项目仓库,到时候原项目的作者就会根据情况是否合并你的代码。
获取URL的过程如下图:
小技巧:若是你直接从GitHub上下载源码速度慢,恰巧你是用的笔记本,你可以使用热点下载,速度惊人,就是不知道是为什么。
4、导入IDEA,配置git获取提交过程
因为Flink是maven项目,所以导入过程只需要在IDEA中选择“导入已存在项目”,选中pom.xml文件即可。
该过程涉及以下几点:
1)Java版本的选择
正规的开源项目都会说明所适合的JDK版本,一般在GitHub项目下面的README.md文件或项目的wiki上;
所需的scala版本、maven同理;
2)配置git
配置过程可百度。
效果图如下:
5、更新代码
以便了解项目的进展,可以采取如下步骤更新本地代码:
1)配置原项目地址
- git remote add upstream <原仓库github地址> //如:https://github.com/apache/flink.git
2)查看当前仓库的远程仓库地址和原仓库地址
- git remote -v
3)获取原仓库的更新
- git fetch upstream
4)合并到本地分支
- git merge upstream/master
5)查看本地更新
- git log
6)更新自己fork 的GitHub仓库
- git push origin/master
本地代码更新的还可以先更新GitHub上的仓库,然后在使用git pull更新本地仓库,但是这种方法我在使用过程遇到了无法获取最新的版本分支的情况,具体过程可以参考Ref[1]。
个人建议使用本文提及的以git命令方式更新。
此外,在使用git从GitHub上拉代码的过程,可能遇到RPC failed问题,可以参考Ref[2]。
Ref:
[1] https://www.cnblogs.com/eyunhua/p/8463200.html
[2]https://www.cnblogs.com/zjfjava/p/10392150.html
阅读GitHub源码的正确打开方式的更多相关文章
- Mybatis源码正确打开方式
精心挑选要阅读的源码项目: 饮水思源——官方文档,先看文档再看源码: 下载源码,安装到本地,保证能编译运行: 从宏观到微观,从整体到细节: 找到入口,抓主放次,梳理核心流程: 源码调试,找到核心数据结 ...
- 如何正确的阅读 js 源码
如何正确的阅读 js 源码 https://astexplorer.net/ AST Abstract Syntax Trees https://alligator.io/js/traversing- ...
- github下载源码的三种方式
从github上下载源码的三种方式 CreationTime--2018年6月7日15点21分 Author:Marydon 1.情景展示 2.实现方式 方式一:直接点击"Downloa ...
- Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
Pull Request的正确打开方式(如何在GitHub上贡献开源项目) GitHub的官方帮助如下: Fork A Repo: https://help.github.com/articles/f ...
- 阅读 Android源码的一些姿势
日常开发中怎么阅读源码 找到正确的源码 IDE 是日常经常用的东西,Eclipse 就不说了,直接从 Android Studio(基于 IntelliJ Community 版本改造)开始. 我们平 ...
- 如何阅读JDK源码
JDK源码阅读笔记: https://github.com/kangjianwei/LearningJDK 如何阅读源码,是每个程序员需要面临的一项挑战. 为什么需要阅读源码?从实用性的角度来看,主要 ...
- 《大牛到底是如何阅读JDK源码的?》一起来学习一下
前言: 如何阅读源码,是每个程序员需要面临的一项挑战,为什么需要阅读源码?从实用性的角度来看,主要有三个目的: 第一,解决手头的新问题或者新需求; 第二,真正理解一部分理论的落地实现; 第三,应对面试 ...
- CRUD搬砖两三年了,怎么阅读Spring源码?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 连读同事写的代码都费劲,还读Spring? 咋的,Spring 很难读! 这个与我们码农朝夕 ...
- 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)
1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本.接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用 ...
随机推荐
- python3之scrapy数据存储问题(MySQL)
这次我用的是python3.6,scrapy在python2.7,3.5的使用方法都不同所以要特别注意, 列如 在python3.5的开发环境下scrapy 的主爬虫文件可以使用 from urlli ...
- HDU-6312-Game
题意: 一个集合里有1到n,两个人轮流从中取数,取出一个数的同时这个数的因子也被取走.取走最后一个数者为胜.判断是否先手必胜. 思路: 一道挺有意思的博弈题.一开始在纸上列出了n为1到6的情况,发现都 ...
- OpenWrt编译后生成的bin文件:jffs2与squashfs、factory与sysupgrade
OpenWrt编译后会生成多个bin文件,比如 openwrt-ar71xx-generic-tl-wr841nd-jffs2-factory.bin 8126464 openwrt-ar71xx-g ...
- POJ 1251 & HDU 1301 Jungle Roads
题目: Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ...
- ionic2踩坑之兼容android4.3及以下版本
一个命令就行了 ionic plugin add cordova-plugin-crosswalk-webview --save 执行完之后重新打包. 但是如果要兼容4.0及以下的话.... 帮不了你 ...
- Cobalt Strike学习笔记
Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透测试工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java ...
- 查漏补缺:进程间通信(IPC):管道
管道是UNIX系统IPC的最古老形式,所有UNIX系统都提供此种通信机制.管道有以下两种局限性: (1)历史上,管道是半双工的(即数据只能在一个方向上流动). (2)管道只能在具有公共先祖的两个进程之 ...
- Mac系列萎靡 大棒能否敲醒苹果?
大棒能否敲醒苹果?" title="Mac系列萎靡 大棒能否敲醒苹果?"> iPhone在智能手机市场中的一骑绝尘,不断将苹果推向神坛位置.即使新品更新幅度 ...
- 关于排序原生js实现
内外排序的区别 排序可以分为两种:内排序和外排序.当数据量不算太大的时候,计算可以在内存中完成的排序称为内排序.当数据量特别大,计算的数据,需要分多次进入内存中进行计算的排序称之为外排序 插入排序 直 ...
- SAT考试里最难的数学题? · 三只猫的温暖
问题 今天无意中在Quora上看到有人贴出来一道号称是SAT里最难的一道数学题,一下子勾起了我的兴趣.于是拿起笔来写写画画,花了差不多十五分钟搞定.觉得有点意思,决定把解题过程记下来.原帖的图太小,我 ...