我們有時候會在Github上fork一個我們感興趣的項目到自己的倉庫暖庄,等一段時間過后這個項目已經(jīng)更新了,但是自己倉庫里還停留在剛fork時的狀態(tài)钦铺,那么我們?nèi)绾伟炎约篺ork到倉庫的項目同步到作者的進度呢张漂?這篇博客主要就是講一下這個問題。
這個問題我有兩種解決的辦法:
一種是在Github上操作读存,把自己倉庫的項目設(shè)成base
,把作者的的項目設(shè)成head
,然后給自己提pr,最后在pull下來就行了为流。這種方法的缺點就是要開網(wǎng)頁點來點去呕屎,如果你正在沉迷在命令行里無法自拔可能不太喜歡這種方法颁湖。
第二種方法是在把作者的項目添加為自己的遠程分支另绩,然后需要同步的時候fetch
一下這個遠程分支甩卓,然后切換的本地分支(如果不在的話)棍郎,然后把遠程倉庫合并到本地分支蜈缤。具體方法如下:
- 先查看一下自己的遠程分支:
git remote -v
# origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
# origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
- 如果作者的倉庫不在遠程分支中臂寝,則把他添加到遠程分支:
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
- 再次查看遠程分支情況凳干,確保已經(jīng)加入:
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 分支和提交點彰阴,傳送到本地锐帜,并會被存儲在一個本地分支 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'
- 把 upstream/master 分支合并到本地 master 上田盈,這樣就完成了同步,并且不會丟掉本地修改的內(nèi)容缴阎。
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
- 同步到Github上的自己的項目
git push origin master
OK,這個小問題都到此結(jié)束允瞧!