【问题标题】:Github how to update the forked repo, entirely the same as newly forkedGithub如何更新分叉的repo,和新分叉的完全一样
【发布时间】:2020-01-28 00:03:57
【问题描述】:

很多天前,我分叉了 Airflow 存储库并稍作修改,然后提交了 PR。

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

一个笨拙的方法是删除我的 repo,然后再次 fork 官方 repo。其实搜索后,也不必删除和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,所以我的 repo 中显示了一个额外的提交。

我的问题是如何更新分叉的仓库,就像新的分叉仓库一样。

参考

How to synchronize fork with original GitHub project? How do I update a GitHub forked repository?

【问题讨论】:

标签: git


【解决方案1】:

您需要pull 来自上游的更改,rebase 选项会将您的更改置于来自上游的同步更改之上。

pull 将自动更改fetchmerge,但是您可能在某些不同步或过时的文件中存在冲突。

$ git pull upstream --r

使用您的更改 + 来自 upstream 的同步更改更新您的 fork,有时您可能会遇到远程 fork 中的一些更改不在本地 git 中的情况。在这种情况下,您可以从您的 fork 中 pull 进行此类更改并在本地合并,或者使用 force-f 选项强制推送和覆盖您的 fork。

$ git push origin branch

现在您可以安全地从 github 本身打开 PR。

我希望这对您有所帮助,如果没有,请随时发表评论,我很乐意提供更多帮助并更新我的答案

【讨论】:

    猜你喜欢
    • 2014-09-23
    • 2013-03-22
    • 2011-06-23
    • 2013-08-20
    • 2020-01-29
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    相关资源
    最近更新 更多