几个月前,我分叉了一个存储库,进行了更改并提交了一个pull请求,最终被接受为master。从那以后,我的硬盘上的代码一直没有动过。现在,我想再次为同一个存储库做贡献。我的fork中的代码与master不同步,因为它的更改从未被提取到master中,并且因为master已经继续运行。我应该删除我的分叉并重新编译,还是有更好的方法?
我以为可能以前曾经问过这个问题。在搜索时,我发现Pull new updates from original GitHub repository into forked GitHub repository,但该问题中的StackOverflower想要保留本地更改,而我想丢弃所有本地更改并采取当前处于主控状态的任何内容。
答案 0 :(得分:8)
如果您的分叉中没有任何内容可以保留,则删除和重新分叉肯定是一种选择。如果您不想这样做,还有很多其他方法可以更新您的回购。
如果你还没有,我可能会首先将上游回购添加为远程回购。这样做:
git remote add upstream <clone-url>
然后,从上游远程获取所有更改:
git fetch upstream
现在,您可以使用新获取的提交执行任何操作。例如,要将本地主分支重置为上游存储库中的分支,请运行以下命令:
git checkout master
git reset --hard upstream/master
您可以将此更改推送到您的GitHub分支,如下所示:
git push --force origin master
有关使用遥控器的更多信息,我建议本章使用Pro Git书中的遥控器:2.5 Git Basics - Working with Remotes
答案 1 :(得分:0)
在 GitHub 上,有一项新功能 - 您只需单击一下即可完成所有这些操作。
以下是如何在 2021 年更新过时的分叉......
谢谢你,GitHub 的这个。超级好用。我写了一个 quick tip: Update an outdated fork on GitHub with a click,它也包含一个 video explanation。