背景
咱们在 GitHub 上参与到某个开源项目的时候,通常有以下开发过程。
- fork 一份原库房到咱们自己的库房中,
- 在自己的库房中切新的分支进行开发,开发完成之后,再推送到自己的库房
- 在原库房进行
Pull Request
,等候审阅人审阅代码通过后,咱们的分支就被兼并到原库房中
这是一个典型的 Github 开发流程
而在这个过程中,原库房的代码经常会变化,而 GitHub 不会帮咱们主动同步原库房的代码,咱们不确保自己修正的代码是否是最新的。因而咱们就面对这样的一个问题:“Github 进行 fork 后的库房,怎么与原库房同步?”
下面是楼主给大家总结出来的解决方法
解决方法
方法一:删掉自己名下 fork 的库房,再 fork 一次(最暴力也是最快的)
- 第一步,进去自己的库房,切换到
Settings
页签 - 第二步,页面滑到最下面,点击
Delete this repository
,进行二次确认即可删去 - 第三步,再次去 fork 一次原库房
方法二:设置上游代码库,拉取 GitHub 库房最新代码后,在 Merge 或 Pull 到本地
- 第一步,查看当时的上游代码库
$ git remote -v # 查看当时的上游代码库
origin https://github.com/AFine970/weekly.git (fetch)
origin https://github.com/AFine970/weekly.git (push)
- 第二步,再设置一个上游代码库,为 fork 的库房地址
$ git remote add upstream https://github.com/IDuxFE/weekly.git # 再设置一个上游代码库
$ git remote -v
origin https://github.com/AFine970/weekly.git (fetch)
origin https://github.com/AFine970/weekly.git (push)
upstream https://github.com/IDuxFE/weekly.git (fetch)
upstream https://github.com/IDuxFE/weekly.git (push)
- 第三步,拉取新设置的上游代码库
$ git fetch upstream # 拉取新设置的上游代码库
- 第四步,切换本地分支到 main 分支
$ git checkout main # 切换本地分支到main分支
- 第五步,拉取或兼并长途分支到本地分支
# 运用Pull拉取分支
$ git pull --rebase upstream main # 将上游库房的main分支通过rebase的方式拉取到本地main分支
# 或许运用Merge
$ git merge upstream main # 运用Merge会多一条merge commit,而pull --rebase不会有
- 第六步,将本地的分支推送到自己的长途库房
$ git push origin main # 再将本地的分支推送到自己的长途库房
总结
上述两种方法,都能很好的解决Github进行fork后怎么与原库房同步
问题。第一种方法最暴力,也最直接;第二种方法可持续性,设置了 fork 库房的上游代码源之后,后续都可以通过第六步进行代码同步更新。
如果你有什么更好的方法,欢迎在评论区讨论
最终,好好学习不会差!我是 970,咱们一起进步