关于git:将原始GitHub存储库中的新更新提取到forked GitHub存储库中

Pull new updates from original GitHub repository into forked GitHub repository

我在GitHub上分叉了某人的存储库,并希望使用原始存储库中的提交和更新来更新我的版本。这些是我把复印件分出来后做的。

如何将源站中所做的更改拉入并将它们合并到我的存储库中?


您必须将原始存储库(您分叉的存储库)添加为远程存储库。

从Github Fork手册页:

fork

Once the clone is complete your repo will have a remote named"origin" that points to your fork on GitHub.
Don’t let the name confuse you, this does not point to the original repo you forked from. To help you keep track of that repo we will add another remote named"upstream":

1
2
3
4
5
6
7
8
9
10
$ cd github-services
$ git remote add upstream git://github.com/pjhyett/github-services.git
$ git fetch upstream

# then: (like"git pull" which is fetch + merge)
$ git merge upstream/master master

# or, better, replay your local work on top of the fetched branch
# like a"git pull --rebase"
$ git rebase upstream/master

您还拥有一个RubyGem,它可以促进这些Github操作。

氧化镁

另请参见"git fork is git clone?".


除了VONC的答案,你还可以根据自己的喜好进一步调整。

从远程分支提取之后,您仍然需要合并提交。我会替换的

1
$ git fetch upstream

具有

1
$ git pull upstream master

因为git pull本质上是git fetch+git合并。


此视频演示如何直接从GitHub更新fork

步骤:

  • 在Github上打开你的叉子。
  • 点击Pull Requests
  • 点击New Pull Request。默认情况下,Github会将原始数据与您的fork进行比较,如果您没有进行任何更改,则不应该有任何可比较的内容。
  • 点击switching the base。现在,Github将把您的fork与原始fork进行比较,您将看到所有最新的更改。
  • 点击Create a pull request进行比较,并为您的请求分配一个可预测的名称(例如,从原始更新)。
  • 点击Create pull request
  • 向下滚动并单击Merge pull request,最后单击Confirm合并。如果您的fork没有任何更改,则可以自动合并它。

  • 用途:

    1
    git remote add upstream ORIGINAL_REPOSITORY_URL

    这会将您的上游设置为您的分叉存储库。然后这样做:

    1
    git fetch upstream

    这将从原始存储库中提取包括master在内的所有分支。

    在本地主分支中合并此数据:

    1
    git merge upstream/master

    将更改推送到分叉存储库,即源站:

    1
    git push origin master

    喂!完成了对原始存储库的同步。


    如果您使用的是Github桌面应用程序,在右上角有一个同步按钮。单击它,然后单击左上角附近的Update from

    如果没有要同步的更改,这将处于非活动状态。

    以下是一些简单的截图。