如何将来自其他分叉的未合并上游拉取请求应用于我的分叉?

江枫思渺然 提交于 2020-02-28 02:46:06

我有一个分支的GitHub上的项目有一个新的pull请求,我想将其拉到作者尚未拉入的分支中。

有没有简单的方法可以将来自其他分叉的拉取请求应用于我的分叉? 这里还有我想念的东西吗?


#1楼

就像Tekkub之前所说的,您可以直接将分支拉入。 大多数情况下,使用GitHub时,分支只是项目的请求用户分支上的“主”。

例如: git pull https://github.com/USER/PROJECT/ BRANCH

作为一个实际的例子:

假设您对一个名为safaribooks的github项目进行了分叉,并且在原始项目中有以下要放入您的fork的pull请求:

然后,在fork的克隆项目文件夹中,运行:

git pull https://github.com/fermionic/safaribooks.git fix-str-decode

#2楼

一些对我有用的更详细的信息。

我的分叉仓库的.git / config文件如下所示:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = false
[remote "origin"]
        url = git@github.com:litzinger/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
        rebase = true
[remote "source"]
        url = git://github.com/revolunet/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/source/*
        fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

然后运行“ git fetch source”,然后列出来自分叉存储库的所有拉取请求。

 * [new ref]         refs/pull/54/head -> origin/pr/54
 * [new ref]         refs/pull/67/head -> origin/pr/67
 * [new ref]         refs/pull/69/head -> origin/pr/69
 * [new ref]         refs/pull/71/head -> origin/pr/71

然后要合并到特定的请求请求中,请运行“ git merge master origin / pr / 67”


#3楼

对项目的请求请求可能来自许多不同的作者(分支),并且您可能不希望每个分支都有单独的遥控器。 另外,您也不想对提交提交请求时作者使用的分支或作者的master分支中的其他内容进行任何假设。 因此,最好参考在上游存储库中出现的拉取请求,而不是在其他派生中出现的引用。

第1步:

git remote add upstream <url>

您可能已经完成了此步骤,但是如果没有,您将需要为上游项目定义一个远程。 该URL是您分叉的项目的克隆URL。 有关为分叉配置遥控器同步分叉的更多信息。 upstream是您为遥控器指定的名称,尽管可以是任何名称,但upstream是常规名称。

第2步:

git pull upstream refs/pull/{id}/head

...其中{id}是拉取请求号。 upstream是要从中拉出的遥控器的名称,即如果完全按照步骤1进行操作,则只是“上游”。 它也可以是URL,在这种情况下,您可以跳过步骤1。

第三步:

输入用于合并提交的提交消息。 您可以保留默认值,尽管我建议给出一个漂亮的单行摘要,其中包含拉取请求编号,它已解决的问题以及简短说明:

Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions

#4楼

更新:通过网页

您也可以通过github网页执行此操作。

我想,你应该已经叉子( MyFork共同回购(的) BaseRepo其具有从叉(挂起拉要求) OtherFork )你感兴趣的内容。

  1. 导航到发起了拉取请求的分叉( OtherFork ),您希望将其拉入分叉( MyFork
  2. 转到OtherFork请求请求页面
  3. 点击新的拉取请求
  4. 应该提供未决的请求请求。 记住也要选择适当的OtherFork分支。 在左侧选择您的MyFork叉( MyFork )( 重要 )作为基础MyFork叉。
  5. 现在,“ View pull request ”选项应更改为“ Create pull request 。 点击这个。

现在您应该在派生叉中有一个待处理的拉取请求( MyFork ),您可以简单地接受它。


#5楼

我为此使用了方便的花花公子脚本。 我通过键入以下命令运行脚本:

git prfetch upstream

并从上游分叉获取所有拉取请求。

要创建脚本,请创建一个文件~/bin/git-prfetch

该文件应包含以下内容:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Please supply the name of a remote to get pull requests from."
    exit 1
fi

git fetch $1 +refs/heads/\*:refs/remotes/$1/\* +refs/pull/\*/head:refs/remotes/$1/pr/\*

通过设置以下内容,确保您的路径包含脚本:

export PATH="$HOME/bin:$PATH"

您可以将此文件添加到~/.bashrc以使更改永久~/.bashrc

现在,确保添加了您要从中获取拉取请求的叉子:

git remote add upstream https://github.com/user/repo.git

接着

git prfetch upstream
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!