我想检查之前创建的拉请求(通过GitHub web界面创建)。我搜索了一下,发现不同的地方有裁判/拉或裁判/拉/pr
但是当我添加fetch = +refs/pull/*/head:refs/remotes/origin/pr/*到git配置文件并进行git取回时
我哪里做错了?GitHub应该自动创建拉/xyz东西,还是我必须配置一些东西?
我想检查之前创建的拉请求(通过GitHub web界面创建)。我搜索了一下,发现不同的地方有裁判/拉或裁判/拉/pr
但是当我添加fetch = +refs/pull/*/head:refs/remotes/origin/pr/*到git配置文件并进行git取回时
我哪里做错了?GitHub应该自动创建拉/xyz东西,还是我必须配置一些东西?
当前回答
我更喜欢在不创建本地分支的情况下提取和签出,并且处于HEAD分离状态。它允许我快速检查拉取请求,而不会用不必要的本地分支污染本地机器。
git fetch upstream pull/ID/head && git checkout FETCH_HEAD
其中ID是一个拉请求ID,上游是已经创建的原始拉请求(例如,它可以是origin)。
其他回答
要获取远程PR到本地回购,
git fetch origin pull/$ID/head:$BRANCHNAME
其中$ID是拉请求ID, $BRANCHNAME是你想要创建的新分支的名称。一旦您创建了分支,那么简单
git checkout $BRANCHNAME
例如,让我们想象一下,你想从源主分支签出拉请求#2:
git fetch origin pull/2/head:MASTER
更多信息请参阅官方GitHub文档。
这个要点描述了当你进行git取回时发生了什么:
显然,改变github的url,以匹配你的项目的url。结果是这样的:
[remote "origin"]
url = git@github.com:joyent/node.git
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
fetch = +refs/heads/*:refs/remotes/origin/*
请注意fetch refspecs的顺序,正如crashneb在他自己的回答中所建议的那样。
如果不是,意思是如果你没有正确的顺序,因为:
Git添加remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"… 然后信任pr -checkout自然地设置了新的本地分支,使用类似git开关pr/1的东西——然后你可能会遇到麻烦,如果pr更新了,你想要git再次拉它。 branch.pr / 1。合并配置值不正确。
现在获取所有的pull请求: $ git获取原点 从github.com: joyent /节点 * [new ref] refs/pull/1000/head -> origin/pr/1000 * [new ref] refs/pull/1002/head -> origin/pr/1002 *[新ref] refs/pull/1004/head -> origin/pr/1004 *[新ref] refs/pull/1009/head -> origin/pr/1009 ... 检查一个特定的拉请求: $ git结账pr/999 分支pr/999设置跟踪远程分支pr/999从原点。 切换到新的分支“pr/999”
问题259中列出了各种脚本来自动化该任务。 git-extras项目提出了git-pr命令(在PR 262中实现)
git-pr(1)——在本地检出一个pull请求
SYNOPSIS git-pr <number> [<remote>] git-pr clean DESCRIPTION Creates a local branch based on a GitHub pull request number, and switch to that branch afterwards. The name of the remote to fetch from. Defaults to origin. EXAMPLES This checks out the pull request 226 from origin: $ git pr 226 remote: Counting objects: 12, done. remote: Compressing objects: 100% (9/9), done. remote: Total 12 (delta 3), reused 9 (delta 3) Unpacking objects: 100% (12/12), done. From https://github.com/visionmedia/git-extras * [new ref] refs/pull/226/head -> pr/226 Switched to branch 'pr/226'
在更新版本的Git中:
Git fetch origin refs/pull-requests/<id>/from:<localbranchname>
有一种使用git-cli的简单方法
gh pr checkout {<number> | <url> | <branch>}
参考:https://cli.github.com/manual/gh_pr_checkout
将远程公关分支机构导入本地分支机构:
Git获取来源' remote_branch ': ' local_branch_name '
配置本地分支的上游为远端分支。
git分支——set-upstream-to=origin/PR_Branch_Name local_branch
当您想再次将本地更改推到PR分支时
git push origin HEAD:remote_PR_Branch_name