Github進行fork後如何與原倉庫同步

實在是……有太多人同時在幫忙修訂錯別字或優化 xiaolai 的 [the-craft-of-selfteaching](https://github.com/selfteaching/the-craft-of-selfteaching) 了。若是你提交的 pull request 未被接受且獲得回覆說:「從新fork」,實際上是你遇到一個問題:git

  • 在你 fork 以後, xiaolai 的倉庫又更新了;
  • 但 github 不會自動幫你把 xiaolai 的倉庫 同步給你 fork 後的倉庫;
  • 致使你提交 pull request 時的版本和 xiaolai 的版本不一致。

這個問題,用顯得更「專業點」的說法,叫作:Github進行fork後如何與原倉庫同步。那到底怎麼作呢?github

最省事的辦法多是:fetch

  • 在你fork的倉庫setting頁翻到最下方,而後delete這個倉庫;
  • 而後從新fork xiaolai 的倉庫,並 git clone 到你的本地。

有時候,你須要用到這個省事的辦法,好比 xiaolai 的倉庫再次整理了 commit 。但在更多狀況下,刪掉本身fork的庫,應該是你的最後選擇,而不該該是首選。優化

和不少人一塊兒向 xiaolai 提交 pull request,這實在是一個反覆練習 merge (中文說法:合併,或版本合併)的機會。絕不誇張地講,版本管理是軟件工程極其重要的規範,也是極其基礎的必備技能。而 merge 則是版本管理中最必須也最經常使用的場景。3d

那要否則,就多練練?如下是傻瓜版操做步驟,還細心配了截圖,保管你從 0 也能上手。至於原理嘛,慢慢再搞懂吧。code

merge前的設定

step 一、進入到本地倉庫的目錄。cdn

下面全部操做,如無特別說明,都是在你的本地倉庫的目錄下操做。好比個人本地倉庫爲/from-liujuanjuan-the-craft-of-selfteachingblog

image

step 二、執行命令 git remote -v 查看你的遠程倉庫的路徑:rem

image

若是隻有上面2行,說明你未設置 upstream (中文叫:上游代碼庫)。通常狀況下,設置好一次 upstream 後就無需重複設置。同步

step 三、執行命令 git remote add upstream https://github.com/selfteaching/the-craft-of-selfteaching.git 把 xiaolai 的倉庫設置爲你的 upstream 。這個命令執行後,沒有任何返回信息;因此再次執行命令 git remote -v 檢查是否成功。

image

step 四、執行命令 git status 檢查本地是否有未提交的修改。若是有,則把你本地的有效修改,先從本地倉庫推送到你的github倉庫。最後再執行一次 git status 檢查本地已無未提交的修改。

git add -A 或者 git add filename git commit -m "your note" git push origin master git status

注1:這一步做爲新手,建議嚴格執行,是爲了不大量無效修改或文本衝突帶來的更復雜局面。

注2:若是你已經在fork後的倉庫提交了大量對 xiaolai 的倉庫並無價值的修改,那麼想要pull request,仍是從新回到本文最初的「最省事辦法」吧。

merge 的關鍵命令

如下操做緊接着上面的步驟。

step 五、執行命令 git fetch upstream 抓取 xiaolai 原倉庫的更新:

image

step 六、執行命令 git checkout master 切換到 master 分支:

image

step 七、執行命令 git merge upstream/master 合併遠程的master分支:

image

step 八、執行命令 git push 把本地倉庫向github倉庫(你fork到本身名下的倉庫)推送修改

若是擔憂本身不當心改了哪裏,能夠再次執行命令 git status 檢查哪些文件有變化。這個操做僅是檢查,不會改變任何狀態,放心用。

image

如今你已經解決了fork的倉庫和原倉庫版本不一致的問題。能夠放心向 xiaolai 發起 pull request 了。若是以上操做你花了很多時間,而 xiaolai 的倉庫 又剛好更新了。很好,一次新的練習機會來了……

小記:這份筆記最初整理於2019年3月。或許由於我平時git操做僅是簡單的修改新增,與其它倉庫協做少,因而這種上游倉庫的設置與同步相關指令須要用時,仍是得搜到這篇筆記來看。那就發出來,或許也能幫到其餘人吧~

相關文章
相關標籤/搜索