Github如何更新已经fork过的仓库,使其与新fork的仓库完全相同

5

许多天前,我fork了Airflow代码库并进行了一些修改,然后提交了一个PR。

但是今天,我想提交另一个PR,所以我需要重新fork最新的Airflow源代码,并且放弃我的所有更改。

一个笨拙的方法是删除我的仓库,然后再次fork官方仓库。实际上,在搜索后,不需要删除和fork。

我尝试过的:

$ git remote add upstream <original-repo-url>
$ git fetch upstream                 # update local with upstream

$ git diff HEAD..upstream/master     # see diffs between local and upstream/master (if there is no diff then both are in sync)

$ git pull upstream master           # pull upstream's master into local branch
$ git push origin HEAD               # push to your forked repo's remote branch

然而,以这种方式,在git push origin master之前我必须先进行git commit,因此我的仓库中会显示一个额外的提交。

我的问题是如何更新派生的存储库,就像一个新的派生存储库一样。

参考资料

如何与原始GitHub项目同步fork? 如何更新GitHub派生存储库?


1
这个回答解决了你的问题吗?git pull --rebase upstream & git push origin rejects non-fast-forward? - bishop
1个回答

5

您需要从上游pull更改,rebase选项会将您的更改放在来自上游同步更改的顶部。

pull将自动fetchmerge更改,但是某些文件可能不同步或过时,因此可能会发生冲突。

$ git pull upstream --r

使用您的更改+来自upstream的同步更改更新您的分支,有时您的远程分支中可能存在一些未在本地git中的更改。在这种情况下,您可以从分支中pull这些更改并在本地合并,或者使用force-f选项强制推送并覆盖您的分支。

$ git push origin branch

现在,您可以安全地从GitHub打开PR。

希望这可以帮助您,如果没有,请随时留言,我很乐意提供更多帮助并更新我的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接