GitHub fork 專案同步上游原始來源的更新
從 GitHub 上 fork 下來的專案,當原始來源有更新後,要如何同步到自己的 fork repo 中? 至目前為止(2016/12),尚無法直接在 GitHub 管理網頁上進行此動作,必須在本地端進行,步驟如下:
將 fork 出來的專案 clone
到本地端作業。
開啟 git bash
,切換到 clone 下來的專案目錄中。
先檢視一下目前的遠端 repo 設定。
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
新增名為 upstream 的 "原始來源" repo 設定
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
確認一下遠端 repo 設定
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
使用 fetch
指令來取得上游來源的更新,上游 master
分支中的更新,會加到本地端的 upstream/master
新分支。
$ git fetch upstream
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
* [new branch] master -> upstream/master
確定目前工作分支。
$ git checkout master
Switched to branch 'master'
使用 merge
來將上游更新加入本地端。
$ git merge upstream/master
Updating a422352..5fdff0f
Fast-forward
README | 9 -------
README.md | 7 ++++++
2 files changed, 7 insertions(+), 9 deletions(-)
delete mode 100644 README
create mode 100644 README.md
若上游更新部分與本地端有衝突則需另行處理。
在本地端整合完成後,再 push 回自己 GitHub 上的 fork repo。
$ git push origin master