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 意見:
張貼留言