我分叉了一个项目,进行了更改,并创建了一个被接受的拉取请求。新的提交后来被添加到存储库中。我怎样才能把这些承诺交给我?


当前回答

如何在本地计算机上更新分叉回购?

首先,检查遥控器/主机

git remote -v

你应该有起点和上游。例如:

origin  https://github.com/your___name/kredis.git (fetch)
origin  https://github.com/your___name/kredis.git (push)
upstream    https://github.com/rails/kredis.git (fetch)
upstream    https://github.com/rails/kredis.git (push)

之后转到main:

git checkout main

并从上游合并到干管:

git merge upstream/main

其他回答

作为对这个答案的补充,我正在寻找一种方法,从上游分支一次性更新我的克隆回购(原始)的所有远程分支。我就是这样做的。

这假设您已经配置了一个指向源存储库(源是从那里分叉的)的上游远程,并将其与git fetch upstream同步。

然后运行:

for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

该命令的第一部分列出了上游远程回购中的所有头,并删除了后跟refs/heads/分支名称前缀的SHA-1。

然后,对于这些分支中的每一个,它将上游远程跟踪分支的本地副本(本地侧的refs/remotes/upstream/<branch>)直接推送到源上的远程分支(远程侧的refs/头/<branch>)。

这些分支同步命令中的任何一个都可能由于以下两个原因而失败:上游分支已被重写,或者您已将该分支上的提交推送到您的分叉。在第一种情况下,如果您没有向分叉上的分支提交任何内容,则可以安全地强制推送(在上面的命令中添加-f开关;即git push-f)。在另一种情况下,这是正常的,因为您的fork分支已经分叉,在提交被合并回上游之前,您不能期望sync命令工作。

遵循以下步骤。我试过了,它帮了我。

签出到您的分支机构

语法:gitbranchyourDevelopmentBranch示例:git checkout master

拉源存储库分支以获取最新代码

语法:git pullhttps://github.com/tastejs/awesome-app-ideas主人示例:git pullhttps://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git分支名称

如果您使用的是Windows或Mac的GitHub,那么现在他们有一个一键更新fork的功能:

在UI中选择存储库。单击顶部的“从用户/分支更新”按钮。

如果您使用GitHub Desktop,只需6步(实际上只有5步)即可轻松完成。

打开Github Desktop并选择存储库后,

转到“历史记录”选项卡单击搜索栏。它将显示所有可用的分支(包括父存储库的上游分支)选择相应的上游分支(它将是上游/主分支到同步主分支分支)(可选)它将显示上游分支中的所有提交。您可以单击任何提交都可以看到更改。根据您的活动分支,单击主/分支名称中的合并。等待GitHub Desktop发挥作用。

查看下面的GIF作为示例:

截至本答复之日,GitHub在web界面中还没有(或者我应该说不再有?)这一功能。然而,你可以问support@github.com加上你的一票。

与此同时,GitHub用户bardiharborow创建了一个工具来实现这一点:https://upriver.github.io/

来源在这里:https://github.com/upriver/upriver.github.io