原先一直有个疑惑, Github fork 出来的项目,我已经做了部分修改,由于某些原因,无法提交 Pull Request,可是想把原项目的最近更新代码合并进来怎么办?google 了一下才茅塞顿开,年纪大了,这里记录一下吧。

两种方式:

  1. 项目 fetch 到本地,通过命令行的方式 merge
  2. 懒人方法,只用 Github ,不用命令行

项目 fetch 到本地,通过命令行的方式 merge

提示:跟上游仓库同步代码之前,必须配置过 remote,指向上游仓库

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

打开命令行工具

  1. 切换当前工作路径至你的本地工程
  2. 从上游仓库获取到分支,及相关的提交信息,它们将被保存在本地的upstream/master分支
git fetch upstream
# remote: Counting objects: 75, done.
# remote: Compressing objects: 100% (53/53), done.
# remote: Total 62 (delta 27), reused 44 (delta 9)
# Unpacking objects: 100% (62/62), done.
# From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
#  * [new branch]      master     -> upstream/master

切换到本地的master分支
git checkout master

# Switched to branch 'master'

把 upstream/master 分支合并到本地的 master 分支,本地的 master 分支便跟上游仓库保持同步了,并且没有丢失你本地的修改。

git merge upstream/master
# Updating a422352..5fdff0f
# Fast-forward
#  README                    |    9 -------
#  README.md                 |    7 ++++++
#  2 files changed, 7 insertions(+), 9 deletions(-)
#  delete mode 100644 README
#  create mode 100644 README.md

同步后的代码仅仅是保存在本地仓库,还要 push 到 Github

参考资料:

《Github 上怎样把新 commits 使用在自己的 fork 上?》

《更新從Github上fork出來的repository (或是同步兩個不同server端的repository)》

《Syncing a fork》

results matching ""

    No results matching ""