分类
综合技术

GitHub仓Fork后与原仓库同步的最佳方案实践

这个故事的起因是AI柠檬博主前段时间通过Fork方式给MinDoc开源项目代码仓提交了一个特性的Pull Request,待Owner合入了所有PR后,我这边还要继续通过我Fork的仓库给上游代码仓提交代码,Fork的仓库要跟上游代码仓同步一次。最笨的方法是删了已有的Fork仓库而重新Fork一个,但这显然不优雅,是不完美的方案。

你还别笑,AI柠檬还没实践过这种操作,毕竟,以前都是别人给我的GitHub仓库提交Pull Request的,我作为Owner只管Code Review并合入代码,但是提PR的人要考虑的就多了(雾)。于是本着优雅地追求完美的本心,搜寻最佳解决方法的资料并实践,您别说,还真的行。

教学步骤实践

首先,请cd到你本地代码仓库的目录下:

PS D:\> cd D:\mindoc

执行命令查看远程仓库路径:

PS D:\mindoc> git remote -v
origin  git@github.com:nl8590687/mindoc.git (fetch)
origin  git@github.com:nl8590687/mindoc.git (push)

我们看到,远程仓库地址只有我自己Fork的仓库地址,说明没有设置 upstream 上游代码仓,需要按照下面的步骤设置一次。一般情况下,设置好一次后就不用重复设置了,除非重新在其他计算机或者目录路径下通过 git clone 命令又重新克隆了一份代码仓。

执行命令如下:

PS D:\mindoc> git remote add upstream https://github.com/mindoc-org/mindoc.git

然后我们再次执行命令检查是否设置成功:

PS D:\mindoc> git remote -v
origin  git@github.com:nl8590687/mindoc.git (fetch)
origin  git@github.com:nl8590687/mindoc.git (push)
upstream        https://github.com/mindoc-org/mindoc.git (fetch)
upstream        https://github.com/mindoc-org/mindoc.git (push)

有类似带upstream的输出就说明设置成功了。然后我们最好先查看本地是否有未提交的修改,如果有,最好先提交了,然后推送代码到我们自己Fork的GitHub仓库里。虽然这一步不是必须,但如果有修改过任何代码,建议最好执行,可以避免很多麻烦事。

关键步骤:进行fetch 和 merge

PS D:\mindoc> git fetch upstream

如果当前位于其他分支的话,需要切换到master分支(或者是main分支)。

PS D:\mindoc> git checkout master

然后,合并远程master分支(或者是main分支):

PS D:\mindoc> git merge upstream/master

最后,将本地所有分支推向自己Fork的代码仓库即可:

PS D:\mindoc> git push

然后,我们就可以再次放心地向上游仓库继续提Pull Request了。

写在最后

本文是AI柠檬博主跟着下面这位老师的教程提炼总结的干货,因为觉得原帖内容太过“丰富”了,并且有在逛“贴吧”的感觉。如果您想详细了解和讨论,可以考虑去看下原帖:
https://github.com/selfteaching/the-craft-of-selfteaching/issues/67

版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2024/11/10/the-best-way-to-sync-github-fork-repo-from-upstream/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

20 − 7 =

如果您是第一次在本站发布评论,内容将在博主审核后显示,请耐心等待