Github 如何更新已經 fork 的專案與原專案紀錄同步

本篇介紹一下怎麼樣更新你在 Github 上已經 fork 過的專案 repository,
與原專案紀錄同步更新並且推上你的 Github。
更新 Github 上已經 fork 的 repository 方法有兩種,分別為

  • 使用 git 指令操作
  • 使用 github 網頁操作

使用 git 指令操作

首先,先切換到 repository 目錄下,
下面已貢獻 linux 專案為例,使用者名稱為 shengyu
git remote -v 查看遠端來源,
輸出 (一般會有兩個):

1
2
origin  git@github.com:shengyu/linux.git (fetch)
origin git@github.com:shengyu/linux.git (push)

加入原來 linux 官方的 upstream

1
git remote add upstream https://github.com/torvalds/linux.git

再用 git remote -v 查看遠端來源, 應該會有四個

1
2
3
4
origin  git@github.com:shengyu/linux.git (fetch)
origin git@github.com:shengyu/linux.git (push)
upstream https://github.com/torvalds/linux (fetch)
upstream https://github.com/torvalds/linux (push)

把 upstream/master 更新到本地的 master (從 torvalds/linux upstream 拉更新下來)

1
2
git checkout master
git pull upstream master

如果本地有自己的 commit, 使用 rebase 方式更新 (避免不必要的 merge),
沒有的話跳過這步驟。

1
git pull --rebase upstream master

更新到遠端的 origin 上 (就是推到自己的 https://github.com/shengyu/linux 上)

1
git push origin master

使用 github 網頁操作

在 github 的網頁上可以看到 Fetch upstream 的下拉式選單,接著按下 Fetch and merge 按鈕就可以完成了。

其它參考
更新從 GitHub 上 fork 出來的 repository (或是同步兩個不同 server 端的 repository)
https://www.peterdavehello.org/2014/02/update_forked_repository/

其它相關文章推薦
Github 提交你的修改貢獻到開源專案
Github 如何更新 pull request
Git 顯示某個檔案的歷史修改記錄
Git 顯示整個repository的歷史修改記錄