Git 同步上游仓库

当我们 fork 仓库后可能会需要与上游仓库同步,最简单的方法是点击 fork 仓库主页的 Sync fork -> Update branch,但也可以使用 git

  1. 请先使用 git clone 将 fork 仓库克隆到本地,然后运行 git remote -v 查看本地的远程仓库:

    $ git remote -v
    origin  https://github.com/YOU/FORK.git (fetch)
    origin  https://github.com/YOU/FORK.git (push)
    
  2. 如果没有 upstream,添加上游仓库(本文为 https://github.com/OWNER/ORIGINAL.git):

    git remote add upstream https://github.com/OWNER/ORIGINAL.git
    
  3. 再次查看本地的远程仓库:

    $ git remote -v
    origin  https://github.com/YOU/FORK.git (fetch)
    origin  https://github.com/YOU/FORK.git (push)
    upstream        https://github.com/OWNER/ORIGINAL.git (fetch)
    upstream        https://github.com/OWNER/ORIGINAL.git (push)
    
  4. 运行 git fetch upstream 获取上游仓库的提交:

    $ git fetch upstream
    remote: Enumerating objects: 5, done.
    remote: Counting objects: 100% (5/5), done.
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (3/3), done.
    From https://github.com/OWNER/ORIGINAL
     * [new branch]      main       -> upstream/main
    
  5. 切换到准备与上游仓库同步的分支(本文为 main):

    $ git checkout main
    Switched to branch 'main'
    
  6. 将上游仓库的 commit 合并到本地分支:

    $ git merge upstream/main
    Updating 141fa1c..dfe3645
    Fast-forward
     README.md | 2 ++
     1 file changed, 2 insertions(+)
    
  7. 如果需要,将本地分支推送到 fork 仓库:

    $ git push origin main
    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/YOU/FORK
       141fa1c..dfe3645  main -> main
    

完成!

相关文章:

参考:

  1. Syncing a fork - GitHub Docs
  2. Git Upstreams and Forks: A Complete How-To - Atlassian Git Tutorial
Built with Hugo
主题 StackJimmy 设计