近來發現閱讀開源項目上手就整最新的代碼不合適,缺乏項目迭代的具體實現過程,想着如果能夠看到針對問題的提交代碼就行了,因此就有了本篇博客。html
以文主要涉及:如何fork開源項目,如何保證本地倉庫代碼更新到最新版本。java
本文以開源項目Flink爲例進行說明。git
fork項目 =====> 下載本地 ======> 導入IDEA , 配置git獲取代碼提交過程 =====>更新代碼github
爲了fork GitHub上的開源項目,首先須要一個GitHub的帳號,註冊過程能夠百度,這裏不詳細展開。apache
在GitHub上找到所需的開源項目,點擊右上角的fork,會自動地在本身的GitHub上建立一個repository,具體以下:maven
爲了獲取contributer的提交過程,這裏使用建議使用git在本身的倉庫裏獲取源碼。fetch
直接在git clone 原項目的URL也是能夠,可是如果你想貢獻代碼到原項目了?直接提代碼到原開源項目上去提確定不行的(固然也不是必定不行,僅說通常狀況)。提交代碼到原項目上的流程通常是:提交代碼到我的的GitHub倉庫,而後new pull request到原項目倉庫,到時候原項目的做者就會根據狀況是否合併你的代碼。spa
獲取URL的過程以下圖:scala
小技巧:如果你直接從GitHub上下載源碼速度慢,恰巧你是用的筆記本,你可使用熱點下載,速度驚人,就是不知道是爲何。3d
由於Flink是maven項目,因此導入過程只須要在IDEA中選擇「導入已存在項目」,選中pom.xml文件便可。
該過程涉及如下幾點:
1)Java版本的選擇
正規的開源項目都會說明所適合的JDK版本,通常在GitHub項目下面的README.md文件或項目的wiki上;
所需的scala版本、maven同理;
2)配置git
配置過程可百度。
效果圖以下:
以便了解項目的進展,能夠採起以下步驟更新本地代碼:
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: