如何使用git签出GitHub拉取请求?
我想签出以前创建的pull请求(通过GitHub web界面创建)。我搜索并找到了不同的地方,其中有一个refs/pull或refs/pull/pr 但是当我将如何使用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。结果是这样的: 现在获取
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。下面是您要做的
git checkout-b测试
git拉力原点拉力/939/头:测试
现在,您可以安全地在这个本地测试分支上测试更改(在本例中,命名为test),一旦您满意了,就可以像往常一样从GitHub合并它。参考Steven Penny的答案,最好创建一个测试分支并测试PR。下面是您要做的
git checkout-b测试
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