Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git签出GitHub拉取请求?_Git_Github_Pull Request_Git Checkout - Fatal编程技术网

如何使用git签出GitHub拉取请求?

如何使用git签出GitHub拉取请求?,git,github,pull-request,git-checkout,Git,Github,Pull Request,Git Checkout,我想签出以前创建的pull请求(通过GitHub web界面创建)。我搜索并找到了不同的地方,其中有一个refs/pull或refs/pull/pr 但是当我将fetch=+refs/pull/*/head:refs/remotes/origin/pr/*添加到git配置文件并执行git fetch时 我做错了什么?GitHub应该自动创建pull/xyz内容,还是我必须配置一些东西?描述了在执行git提取时发生的情况: 显然,更改github url以匹配项目的url。结果是这样的: 现在获取

我想签出以前创建的pull请求(通过GitHub web界面创建)。我搜索并找到了不同的地方,其中有一个refs/pull或refs/pull/pr

但是当我将
fetch=+refs/pull/*/head:refs/remotes/origin/pr/*
添加到git配置文件并执行git fetch时

我做错了什么?GitHub应该自动创建pull/xyz内容,还是我必须配置一些东西?

描述了在执行git提取时发生的情况:

显然,更改github url以匹配项目的url。结果是这样的:

现在获取所有拉取请求:

要签出特定的拉取请求,请执行以下操作:

中列出了各种脚本以自动执行该任务。
项目提出了命令
gitpr
(在中实现)

git pr
(1)——在本地签出拉取请求 提要 描述了在执行git获取时发生的情况:

显然,更改github url以匹配项目的url。结果是这样的:

现在获取所有拉取请求:

要签出特定的拉取请求,请执行以下操作:

中列出了各种脚本以自动执行该任务。
项目提出了命令
gitpr
(在中实现)

git pr
(1)——在本地签出拉取请求 提要
要将远程PR提取到本地回购中

git fetch origin pull/$ID/head:$BRANCHNAME
其中,
$ID
是拉取请求ID,
$BRANCHNAME
是要创建的新分支的名称。创建分支后,只需

git checkout $BRANCHNAME

有关更多信息,请参阅。

要将远程PR提取到本地回购中

git fetch origin pull/$ID/head:$BRANCHNAME
其中,
$ID
是拉取请求ID,
$BRANCHNAME
是要创建的新分支的名称。创建分支后,只需

git checkout $BRANCHNAME

有关更多信息,请参阅。

这将获取,而无需命名分支:

git pull origin pull/939/head

这将在您无需命名分支的情况下获取:

git pull origin pull/939/head

我意外地写下了与git extras提供的几乎相同的内容。因此,如果您更喜欢单个自定义命令而不是安装一堆其他额外命令,只需将其放置在
$PATH
中的某个位置,然后您就可以编写:

git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1

我不小心写的东西和git extras提供的几乎一样。因此,如果您更喜欢单个自定义命令而不是安装一堆其他额外命令,只需将其放置在
$PATH
中的某个位置,然后您就可以编写:

git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1

如果您使用的是Github.com,请转到“拉动请求”,单击相关的拉动请求,然后单击“命令行说明”链接:

如果您使用的是Github.com,请转到“拉动请求”,单击相关拉动请求,然后单击“命令行说明”链接:

上述一些选项的问题在于,如果有人在打开PR后向PR推送更多的提交,他们将不会提供最新版本。 对我来说,最有效的方法是:转到PR,然后按“提交”,滚动到底部以查看最新的提交哈希 然后简单地使用git checkout,即

git签出

在上面的例子中


git checkout 0ba1a50

上述一些选项的问题是,如果有人在打开PR后向PR推送更多提交,他们将不会提供最新版本。 对我来说,最有效的方法是:转到PR,然后按“提交”,滚动到底部以查看最新的提交哈希 然后简单地使用git checkout,即

git签出

在上面的例子中


git checkout 0ba1a50

参考Steven Penny的答案,最好创建一个测试分支并测试PR。下面是您要做的

  • 创建一个测试分支以将PR合并到本地。假设您在主分支上:
  • git checkout-b测试

  • 将PR更改获取到测试分支中
  • git拉力原点拉力/939/头:测试


    现在,您可以安全地在这个本地测试分支上测试更改(在本例中,命名为test),一旦您满意了,就可以像往常一样从GitHub合并它。

    参考Steven Penny的答案,最好创建一个测试分支并测试PR。下面是您要做的

  • 创建一个测试分支以将PR合并到本地。假设您在主分支上:
  • git checkout-b测试

  • 将PR更改获取到测试分支中
  • git拉力原点拉力/939/头:测试


    现在,您可以安全地在此本地测试分支上测试更改(在本例中,命名为test),一旦您满意,就可以像往常一样从GitHub合并它。

    您可以使用
    git config
    命令将新规则写入
    .git/config
    以从存储库获取请求:

    $ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'
    
    然后就是:

    $ git fetch origin
    Fetching origin
    remote: Counting objects: 4, done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
    Unpacking objects: 100% (4/4), done.
    From https://github.com/container-images/memcached
     * [new ref]         refs/pull/2/head -> origin/pr/2
     * [new ref]         refs/pull/3/head -> origin/pr/3
    

    您可以使用
    git config
    命令将新规则写入
    .git/config
    以从存储库获取请求:

    $ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'
    
    然后就是:

    $ git fetch origin
    Fetching origin
    remote: Counting objects: 4, done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
    Unpacking objects: 100% (4/4), done.
    From https://github.com/container-images/memcached
     * [new ref]         refs/pull/2/head -> origin/pr/2
     * [new ref]         refs/pull/3/head -> origin/pr/3
    

    我更喜欢在不创建本地分支的情况下获取和签出,并处于头分离状态。它允许我快速检查拉请求,而不会用不必要的本地分支污染本地机器

    git提取上游提取/ID/head&&git检出提取\u head

    其中,
    ID
    是拉取请求ID,
    上游
    其中是原始拉取请求(例如,它可以是
    原始


    我希望它能有所帮助。

    我更喜欢在不创建本地分支的情况下获取和签出,并且处于头部分离状态。它允许我快速检查拉请求,而不会用不必要的本地分支污染本地机器

    git提取上游提取/ID/head&&git检出提取\u head

    其中,
    ID
    是请求ID
    git pull upstream pull/<pull_request_number>/head
    
    git fetch upstream pull/<pull_request_number>/head:newbranch
    
    $ git ls-remote origin |grep pull
    f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae    refs/pull-requests/1503/from
    da4666bd91eabcc6f2c214e0bbd99d543d94767e    refs/pull-requests/1503/merge
    ...
    
    hub checkout https://github.com/owner/repo/pull/1234
    or
    hub pr checkout 1234
    
       $ git remote -v
       origin  git@github.com:<yourname>/<repo_name>.git (fetch)
       origin  git@github.com:<yourname>/<repo_name>.git (push)
       upstream   git@github.com:<repo_owner>/<repo_name>.git (fetch)
       upstream   git@github.com:<repo_owner>/<repo_name>.git (push)
    
       <repo_owner>:<BranchName>
    
       git pull origin <BranchName>
    
    gh pr checkout {<number> | <url> | <branch>}
    
    git checkout -b local-branch-name
    
    git pull git@github.com:your-repo-ssh.git remote-branch-name