GitHub 操作:同步 Fork 来的仓库(上游仓库)

Posted by Yun on Fri, Oct 11, 2019

Fork 是 Github 上的常用操作之一,不同于 Star,Fork 会将进行 Fork 操作那一刻的仓库代码完全复制到自己的仓库下。Fork 之后,我们可能会为原仓库添加一个 Feature,之后发起 Pull Request。

往往在 Fork 之后,原仓库的作者也会进行代码更新,与我们自身的更新在 Git Commit 树中会分叉,如下图所示:

git commit tree
git commit tree

在某些这样的时候,我们发起的 Pull Request 是有冲突的。就算没有冲突,及时在发送 Pull Request 之前同步原仓库的代码也是十分必要的。本文将会介绍同步 Fork 原仓库代码的方法。

Step 1. 添加 upstream

我们首先要在 Git 中配置指向上游仓库(即 Fork 前的原本仓库)的远程仓库。

查看当前的 remote 情况:

1$ git remote -v  # 列出当前的 remote 情况
2> origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
3> origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

添加上游仓库的地址:

1$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

验证:

1$ git remote -v
2> origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
3> origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
4> upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
5> upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Step 2. 同步上游仓库代码

我们可以直接使用 git pull 命令同步 upstream 的指定分支即可。

为了更加保险,可使用 git pull --rebase 在本地解决可能发生的冲突。

Step 3. 上传到自己的仓库,发起PR

同步代码并解决冲突完成之后,可以将代码上传到自己的仓库中,并发起 Pull Request。

参考链接


版权声明:本文遵循 CC BY-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

Copyright statement: This article follows the CC BY-SA 4.0 copyright agreement. For reprinting, please attach the original source link and this statement.