只有累積,沒有奇蹟

2019年4月10日 星期三

[Git] 如何更新 GitHub Fork 的 repository

前言
GitHub 是全球最大的 Git Server,在 GitHub 上面有很多大神貢獻的 opensource 開源專案內容,看到覺得不錯有興趣的 repository 可以 fork 下來研究,repository 在 fork 下來之後會停留在當下不會自動更新,一段時間之後可能就會與原始 repository 的越差越多,自己在過去遇到這問題時候都是直接砍掉 repo 在重新 fork (砍掉重練概念),但其實在 GitHub 官方文件有提到其他方式可以達到此目的,這篇文章就實測候的結果做分享,若有問題歡迎提出一起討論或是給予指導。

操作步驟
為了讓過程更容易理解找了 GitHub 上的 awesome-dotnet 做為範例說明,如下所示之前自己 fork awesome-dotnet 的 repository 當時有 1,258 筆 commit,但目前最新版的 commit 已經有 1,260 筆
在 GitHub 並未提供功能同步 fork 來源的 repository,因此可以透過以下步驟進行
Step 1 : 查看目前狀態輸入指令  git remote -v  可以看到目前有兩筆資料,內容為自己 GitHub fork 的 repo
origin  https://github.com/marcustung/awesome-dotnet.git (fetch)
origin  https://github.com/marcustung/awesome-dotnet.git (push)
Step 2 : 加入遠端的 repository 指定別名為 upstream,輸入指令且定義 repository GitHub 位置  git remote add upstrerm https://github.com/quozd/awesome-dotnet.git ,執行完畢後在輸入  git remote -v  確認目前狀態,可以發現多了 upstream fetch & push
origin  https://github.com/marcustung/awesome-dotnet.git (fetch)
origin  https://github.com/marcustung/awesome-dotnet.git (push)
upstream        https://github.com/quozd/awesome-dotnet.git (fetch)
upstream        https://github.com/quozd/awesome-dotnet.git (push)
Step 3 : 接著把 upstream 更新抓下來,可以透過  git pull upstream master  取得遠端 master 的更新資料
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 2), reused 5 (delta 2), pack-reused 1
Unpacking objects: 100% (6/6), done.
From https://github.com/quozd/awesome-dotnet
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master
Updating 1fa69a7..11d1a9a
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
Step 4 : 此時到 git log 查看發現已取得原本的 repo 更新資料,並與來源 GitHub commit 紀錄與 local 紀錄做比對,確認已更新至最新 commit 無誤
Step 5 : 接著就可以開始進行修改或是異動的動作,完成後在把更新後的 repo push 即可更新到自己的 GitHub  
git push origin master
透過以上步驟完成本地端的更新,大功告成 !! 

參考
syncing-a-fork

0 意見:

張貼留言

Copyright © m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com