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


当前回答

我用这一行更新我的分叉回购:

git pull https://github.com/forkuser/forkedrepo.git branch

如果您不想在项目中添加另一个远程端点,请使用此选项,如其他解决方案所示。

其他回答

自2013年11月以来,GitHub发布了一个非官方的功能请求,要求他们添加一个非常简单直观的方法来保持本地分叉与上游同步:

https://github.com/isaacs/github/issues/121

注意:由于功能请求是非官方的,因此建议联系support@github.com添加对要实现的类似功能的支持。上述非官方功能请求可作为对正在实施的功能感兴趣的证据。

从2014年5月开始,可以直接从GitHub更新fork。截至2017年9月,这仍然有效,但这将导致肮脏的犯罪历史。

在GitHub上打开你的分叉。单击拉取请求。单击New Pull Request。默认情况下,GitHub会将原始文件与您的fork进行比较,如果您没有进行任何更改,则不应该有任何可比较的内容。如果看到该链接,请单击切换基础。否则,手动将底叉向下设置到叉上,将头叉设置到上游。现在GitHub将您的分叉与原始分叉进行比较,您应该可以看到所有最新的更改。创建拉取请求并为拉取请求分配一个可预测的名称(例如,从原始请求更新)。向下滚动到Merge pull请求,但不要单击任何内容。

现在您有三个选项,但每个选项都会导致提交历史记录不那么清晰。

默认值将创建难看的合并提交。如果您单击下拉菜单并选择“压缩并合并”,所有中间提交都将被压缩为一个。这通常是你不想要的。如果您单击Rebase并合并,所有提交都将“与”您一起进行,原始PR将链接到您的PR,GitHub将显示This branch is X commits before,Y commits behind<original fork>。

因此,是的,您可以使用GitHub web UI保持回购的上游更新,但这样做会玷污您的提交历史。而是坚持使用命令行-这很简单。

我用这一行更新我的分叉回购:

git pull https://github.com/forkuser/forkedrepo.git branch

如果您不想在项目中添加另一个远程端点,请使用此选项,如其他解决方案所示。

“拉”应用程序是一个自动设置和忘记的解决方案。它将使fork的默认分支与上游存储库同步。

访问URL,单击绿色的“安装”按钮,然后选择要启用自动同步的存储库。

分支每小时在GitHub上直接更新一次,在本地计算机上,您需要拉动主分支以确保本地副本同步。

如果像我一样,你从来没有直接向主人承诺过什么,你真的应该这样做,你可以做以下事情。

从fork的本地克隆创建上游远程。你只需要做一次:

git remote add upstream https://github.com/whoever/whatever.git

然后,每当您想赶上上游存储库主分支时,您需要:

git checkout master
git pull upstream master

假设你从未对师父做过任何事,你应该已经做了。现在,您可以将本地主机推送到源远程GitHub分叉。您还可以将开发分支重新基于当前最新的本地主机。

在初始的上游设置和主签出之后,您需要做的就是运行以下命令以将主设备与上游设备同步:git pull上游主设备。