如何同步 Fork 倉庫的上游分支並合併到自己的工作分支(含一鍵指令)
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1132
在 GitHub 上貢獻開源專案時,常常需要 Fork 原始倉庫來開發自己的功能,然後提交 Pull Request。不過,在你開發的同時,原作者也可能在持續更新原始分支。
這時就會遇到一個常見問題:
✅「我要怎麼把原作者的最新更新同步到我自己的功能分支中?」
本篇將以具體範例教學,讓你用一組命令就能完成同步與合併!
🧭 假設情境
我們假設你現在的開發情境如下:
-
✅ 你 Fork 了一個開源專案(稱為
origin
) -
✅ 上游原作者的倉庫(稱為
upstream
)有一個分支叫original_branch
-
✅ 你自己在 Fork 倉庫中建立了一個功能開發分支
my_feature_branch
-
✅ 你想要:
-
把原作者的
original_branch
更新拉下來 -
把這些更新套用到你的
my_feature_branch
-
🔧 前置設定(只需做一次)
如果你還沒設定過 upstream
(上游倉庫來源):
git remote add upstream https://github.com/原作者帳號/專案名.git
確認一下遠端設定是否正確:
git remote -v
🛠 一鍵完成的同步與合併命令
這是一組可以直接在終端機執行的命令,能完成所有更新動作:
# 1. 取得 upstream 的更新(原作者的倉庫)
git fetch upstream
# 2. 更新本地的 original_branch 分支為 upstream 的最新狀態
git checkout original_branch
git reset --hard upstream/original_branch
git push origin original_branch --force
# 3. 回到你的功能開發分支
git checkout my_feature_branch
# 4. 合併剛剛更新好的 original_branch 到你的工作分支
git merge original_branch
# 5. 將合併後的分支推送到 GitHub(如有需要)
git push origin my_feature_branch
📌 執行結果
分支名稱 | 描述 |
---|---|
original_branch |
與上游 upstream 完全一致,用來作為同步來源 |
my_feature_branch |
含有你的功能開發內容,也合併了 upstream 的更新 |
這樣一來,你就不會錯過原作者的 bug 修正或新功能更新,能保持與上游專案的最佳同步狀態。
💡 補充:rebase 替代 merge(進階用法)
如果你希望讓 commit 歷史更整齊,也可以考慮用 rebase
取代 merge
:
git checkout my_feature_branch
git rebase original_branch
但請注意:rebase
比較容易產生衝突,建議你先熟悉 merge
方式。
✅ 總結
這篇文章介紹了一套標準流程,用於同步 GitHub Fork 倉庫的上游內容,並且合併到自己開發中的分支。這能大幅降低未來合併衝突的機會,並讓你在開發時始終保持與上游一致。
如果你有更多 Git 工作流上的問題,歡迎留言交流,或關注本部落格獲得更多實戰技巧 👨💻
需要我幫你加上語法高亮的 Markdown 格式,或支援 Hugo / Hexo / Zola 等框架的 frontmatter 嗎?我可以直接幫你補上!
This article was last edited at