【git】synchronize fork project

之前修改了hexo cactus主题一些中文配置后创建的pull request(first pull request)已经被原作者merge了。由于原始仓库也有了其他的一些更新,所以接下来就需要把原始仓库的更新同步到个人的远程仓库。

具体做法是:1. 本地仓库与原始仓库建立关联;2. 将原始仓库的更新fetch到本地仓库;3. 本地仓库通过create pull request的方式更新到个人远程仓库。(关于本地仓库/原始仓库/远程仓库的理解,参考:push local project to github

Guide // TODO

add original repository

查看当前所在分支:git branch

切换到pull request专用分支branch-tony: git checkout branch-tony

屏幕快照 2019-02-24 11.21.02

查看远程仓库关联信息:git remote -v

添加原始远程仓库关联:git remote add upstream https://github.com/probberechts/hexo-theme-cactus.git

(自定义原始仓库标识为upstream)

再次查看远程仓库关联信息:git remote -v

屏幕快照 2019-02-24 11.29.18

fetch from original repository to local

更新原始仓库到本地仓库branch-tony分支,以及merge说明:

1
2
git fetch upstream master
git pull upstream master

屏幕快照 2019-02-24 11.36.17

屏幕快照 2019-02-24 11.35.30

更新到远程仓库branch-tony分支:

1
2
3
git add .
git commit -m "update from original repo"
git push origin branch-tony

屏幕快照 2019-02-24 11.42.07

屏幕快照 2019-02-24 11.55.13

create pull request to origin master

Compare & pull request, 选择个人远程仓库的master分支

屏幕快照 2019-02-24 11.59.09

编辑commit comment,create pull request

屏幕快照 2019-02-24 11.59.40

没有conflict就可以merge到master分支

屏幕快照 2019-02-24 12.03.57

然后本地仓库再切换到master分支:git checkout master

屏幕快照 2019-02-24 12.11.53

从个人远程仓库fetch到本地仓库:

1
2
git fetch origin master
git pull origin master

屏幕快照 2019-02-24 12.12.47

个人远程仓库与原始仓库同步完毕。

PS: 注意分支branch-tony是专门用于create pull request,分支master才是做自定义配置和日常使用。

Reference

github如何实现fork的项目与原项目同步

Github上fork项目后与原项目保持同步