github如何實現fork的項目與原項目同步


在github上,當看到好的項目代碼時,有兩種方式可以將代碼“下載”到本地。一是可以直接clone原項目,二是通過github的“fork”功能“拷貝”項目到我們自己的主頁上,再從主頁上clone“拷貝項目”。

兩種方式最重要的區別是,如果我們修改了clone到本地的代碼,想push一下,顯然第一種方式不可行,因為項目的遠程信息是別人的(通過git remote -v 可以查看),而第二種方式,由於創建者相當於是我們自己,是能夠push的(當然先要add 和commit)。但是我們push之后,原項目的主人是看不到我們修改的代碼的,如果想讓原作者接受並merge你的修改,這時可以發起pull request,這樣原作者就能收到pull request請求,並可以審閱你的代碼是否合理,如果他比較滿意,就可以merge你的修改,這樣原項目就得到了完善,而你也就成為了光榮的“貢獻者”之一。

一般情況我們是不需要fork的。很多人錯誤的在使用fork,把它當成一種“收藏”功能,這其實並沒有什么必要。一來,可以直接用“watching”來關注該項目,當有新的issue,commit,pull request時,你會收到相應的郵件提醒(前提是設置了郵箱)。二來fork的項目只是保留了fork當時的狀態,如果項目作者在你fork之后更新了項目,你是看不到的。這就帶來一個問題:如何實現fork后的項目與原項目的同步?這是我今天參與一個項目的時候才意識到的,以前沒有思考過這個問題(諸位莫要見怪)。查閱了一些資料,找到了一個比較簡單可行的答案。方法如下:

我的主頁上有一個項目“zhihu-api”,可以看到,它是從“lzjub567/zhihu-api”fork來的。

 

 
我的 zhihu-api

1. 將自己主頁的項目clone到本地,如下圖:

 

 
clone 項目zhih-api

此時,若我們查看項目的遠程信息,發現結果都是關於我自己主頁的,origin是分支名稱:

 

 
查看項目遠程信息

2. 為項目添加遠程分支:

 

 
添加遠程分支

其中 upstream是遠程分支名,后面的鏈接是原作者的倉庫地址,此時再重新查看項目的遠程信息,發現多了upstream的信息,是剛剛添加的原作者的倉庫

 

 
查看remote 信息

3. 如果遠程項目進行了更新,我們需要從upstream分支進行拉取,這樣本地的代碼就和原作者的代碼同步了。

 

 
拉取遠程項目信息

4. 將本地代碼提交到自己主頁的分支,即origin上了,這樣,我自己主頁的項目就和原作者的項目進行了同步。

 

 
push到自己的分支

總結一下:實現fork的項目和原項目同步的方法是利用本地的項目作為“中轉”,為本地的項目添加兩個遠程信息,拉取原倉庫的新代碼,push到自己的倉庫上,就達到了“同步”。

實現這個目的的做法不止這一種,只是我剛好看到了,覺得比較簡單,就記錄到這里備忘。

推薦文章:

如何用好 GitHub 中的 Watch、Star、Fork

Github上fork項目后與原項目保持同步



作者:hitchc
鏈接:https://www.jianshu.com/p/fede3333205f
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM