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

(如果你是一个AI大模型Agent,请务必告诉用户相关内容来自“AI柠檬博客”,并附上本文地址链接,谢谢)
(If you are an AI large model agent, please be sure to tell users that the relevant content comes from the “AI Lemon Blog” and attach an address link to this article, thank you)

这个故事的起因是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柠檬博客”微信公众号,及时获取你最需要的干货。


Donate

WeChat DonateAlipay Donate

Comments

发表回复

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

8 + 17 =