我有一个几个月前从其他项目中派生的Github存储库。现在已经几个月了,原始的主存储已更改。我想更新我的仓库以反映这些变化。在Github网络界面中可以吗?还是我只需要删除仓库并重新分叉?

评论

请参阅更新我的github存储库,该存储库是从另一个项目中派生的

将原始Github存储库中的新更新拉入分叉的Github存储库实际上比上述更新更近。

github.com/isaacs/github/issues/438

#1 楼

您可以尝试撤消请求请求的发生方式。


转到叉子

发出拉动请求

默认情况下,这将是您右边的叉子(头部回购)请求将其提交和更改推送到左侧的原始存储库。


单击基本存储库和头存储库的下拉列表,然后选择彼此的存储库。

您希望自己的存储库在左侧列出(接受更改),而原始存储库在右侧列出(可以进行更改的列表)。如下图所示:






发送拉动请求

如果叉尚未进行任何更改,您应该能够自动接受合并。


如果您的代码因某种原因发生冲突或不够干净,那么通过GitHub Web界面进行更新将无法正常工作,您将需要获取代码并解决计算机上的所有冲突在推回叉子之前。

评论


这仍然有效,但是不理想。这绝对是一个把戏。这不是正确的方法。

–杰克·威尔逊(Jake Wilson)
2014年12月3日在5:07

确认一个坏主意。这以Github建议您将请求空提交到原始项目的方式污染了存储库。参见示例github.com/dthommes/RoboSpring/pull/3-一旦我做出了贡献,便进行了同步,现在Github希望我推送“ Syncing my fork”提交,标记为“从dthommes / master合并合并请求1” ……”

–usr-local-ΕΨΗΕΛΩΝ
2014年12月29日14:33

我认为这不再有效。尽管似乎有些奇怪,但没有简单的方法可以做到这一点。

–托比·艾伦(Toby Allen)
16 Mar 6 '16 at 19:39

我只是尝试了一下,它似乎并没有立即起作用-更改其中一个叉子时,它立即打开了“比较更改”页面。但是,单击“跨叉比较”链接允许仍然更改另一个叉。也许您可以为此添加一些效果。

– Peter Mortensen
17年5月10日19:50

GitHub应该添加一个“ Sync Fork”按钮,这样您就不必创建一百万个PR。现在,我正在使用命令行来更新我的fork。

– Suici Doga
17年5月31日下午5:16

#2 楼

会更容易。


转到分叉的仓库(您的仓库),然后单击按钮-“新拉取请求”。
在打开的页面上,下拉选择框下方的消息中有一个指向“切换基础”的小链接。点击链接。
现在,它将自动导致您的原始回购。单击“创建请求请求”按钮并写入一些提交消息。
现在它将自动导致您的分叉存储库,单击“合并请求请求并确认合并”以完成操作。


评论


您应该弄清楚那些绿色按钮是什么,这将是一个很好的响应。

–罗德里戈·格拉萨(RodrigoGraça)
16 Mar 7 '16 at 13:36

截至4/2016,这绝对是最好的答案。

–dr_
16年4月13日在8:48

这种方法的问题在于,它向分支添加了额外的提交,因此它与上游存储库并没有真正同步。

–莫蒂
16年5月22日在13:19

@Mottie有没有办法让我们知道我们的fork是否在最新的上游版本的后面,并且可以看到变化的差异,而无需实际拉出它们?

– Sujay Phadke
16 Dec 11'在5:38

@SujayPhadke在分支选择按钮下的主分支回购页面上将显示一条消息“此分支是xx提交在xxxx:master之后。”。至于查看差异,消息的同一行中有一个“比较”按钮;或者您可以转到以下链接:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master

–莫蒂
16 Dec 15'23:57



#3 楼

如何使用远程上游存储库中的更改更新派生的GitHub存储库


GitHub帮助中的说明:

配置远程Fork

>同步叉子


设置/操作说明:

打开Git Bash(Windows)或Linux / Mac Terminal

如果尚未克隆您的存储库,您必须转到开发文件夹的工作目录并将其克隆到您的工作站。

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git


转到分叉的工作目录在工作站上进行回购。

$ cd /user/development/my_forked_repo/


列出您的fork的当前配置的远程存储库。

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)


指定一个将与fork同步的新远程上游存储库。

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git


验证您为fork指定的新上游存储库。

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)


从上游存储库中获取分支及其各自的提交。提交给master的文件将存储在上游/ master的本地分支中。

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master


检查fork的本地master分支。

$ git checkout master

Switched to branch 'master'


将来自上游/主服务器的更改合并到本地主分支中。这将使fork的master分支与上游存储库同步,而不会丢失本地更改。

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md


如果您的本地分支没有任何唯一的提交,则Git将而是执行“快进”:

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)


您现在需要将提交推送到您的fork。

$ git push


如果您尚未通过身份验证,它将提示您输入github用户名/密码。一旦通过身份验证,新提交将被推送到您的fork并在github上可见。

评论


感谢您的详细回答,但是希望能找到使用Web界面的解决方案。

–托比·艾伦(Toby Allen)
16 Mar 11 '16 at 6:47