Gar*_*lon 205 git github git-checkout pull-request
我想查看以前创建的拉取请求(通过GitHub Web界面创建).我搜索并找到了refs/pull或refs/pull/pr的不同地方
但是当我添加fetch = +refs/pull/*/head:refs/remotes/origin/pr/*到git配置文件并执行git fetch时
我做错了什么?GitHub应该自动创建pull/xyz的东西,还是我必须配置一些东西?
tim*_*mbo 307
要将远程PR提取到您的本地仓库,
git fetch origin pull/ID/head:BRANCHNAME
Run Code Online (Sandbox Code Playgroud)
其中ID是拉取请求ID,而branchname是您要创建的新分支的名称.一旦你创建了分支,那么就这么简单
git checkout BRANCHNAME
Run Code Online (Sandbox Code Playgroud)
小智 110
这将获取,而无需您命名分支:
git pull origin pull/939/head
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 47
这个要点确实描述了当你进行git fetch时发生的事情:
显然,更改github url以匹配项目的URL.最终看起来像这样:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:joyent/node.git
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
Run Code Online (Sandbox Code Playgroud)
现在获取所有拉取请求:
$ git fetch origin
From github.com:joyent/node
* [new ref] refs/pull/1000/head -> origin/pr/1000
* [new ref] refs/pull/1002/head -> origin/pr/1002
* [new ref] refs/pull/1004/head -> origin/pr/1004
* [new ref] refs/pull/1009/head -> origin/pr/1009
...
Run Code Online (Sandbox Code Playgroud)
要查看特定的拉取请求:
$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from origin.
Switched to a new branch 'pr/999'
Run Code Online (Sandbox Code Playgroud)
问题259中列出了各种脚本以自动执行该任务.
该混帐额外的项目提出了命令git-pr(在实施PR 262)
git-pr(1) - 在本地检查拉取请求概要
git-pr <number> [<remote>]
git-pr clean
Run Code Online (Sandbox Code Playgroud)
描述
根据GitHub拉取请求编号创建本地分支,然后切换到该分支.
要获取的远程的名称.默认为
origin.例子
这
226将从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'
Run Code Online (Sandbox Code Playgroud)
And*_*maz 33
我更喜欢在不创建本地分支的情况下获取和检出并处于HEAD分离状态.它允许我快速检查拉取请求,而不会使用不必要的本地分支机构污染本地计算机.
git fetch upstream pull/ID/head && git checkout FETCH_HEAD
其中ID是拉取请求ID,upstream其中创建了原始拉取请求(origin例如,可能是).
我希望它有所帮助.
bag*_*ard 16
Github 最近发布了一个名为github-cli的 cli 实用程序。安装后,您可以使用其 id ( doc )在本地检出拉取请求的分支
例如: gh pr checkout 2267
这也适用于分叉,但如果您随后需要推回分叉,则需要添加远程存储库并使用传统的git push(直到此票在 gh 实用程序中实现)
bho*_*bar 13
参考Steven Penny的答案,最好创建一个测试分支并测试PR.所以这就是你要做的.
git checkout -b test
git pull origin pull/939/head:test
现在,您可以安全地测试此本地测试分支上的更改(在本例中为命名测试),一旦您满意,就可以像往常一样从GitHub合并它.
对于 Bitbucket,您需要将单词替换pull为pull-requests。
首先,您可以通过git ls-remote origin命令确认拉取请求 URL 样式。
$ git ls-remote origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e refs/pull-requests/1503/merge
...
Run Code Online (Sandbox Code Playgroud)
如您所见,它refs/pull-requests/1503/from不是refs/pull/1503/from
然后你可以使用任何答案的命令。
如果您遵循“github fork”工作流程,您可以在其中创建一个 fork 并添加远程上游存储库:
14:47 $ 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_owrer>/<repo_name>.git (fetch)
upstream git@github.com:<repo_owner>/<repo_name>.git (push)
Run Code Online (Sandbox Code Playgroud)
要拉入您当前的分支,您的命令将如下所示:
git pull upstream pull/<pull_request_number>/head
Run Code Online (Sandbox Code Playgroud)
要拉入新分支,代码将如下所示:
git fetch upstream pull/<pull_request_number>/head:newbranch
Run Code Online (Sandbox Code Playgroud)
您可以使用git config命令编写新规则以.git/config从存储库中获取拉取请求:
$ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'
Run Code Online (Sandbox Code Playgroud)
然后就是:
$ 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
Run Code Online (Sandbox Code Playgroud)
我正在使用 hub,一个来自 github 的工具:https : //github.com/github/hub
使用集线器在本地检查拉取请求有点容易:
hub checkout https://github.com/owner/repo/pull/1234
or
hub pr checkout 1234
Run Code Online (Sandbox Code Playgroud)
尽管此线程上的大多数答案都有效,但我更喜欢在新分支中获取拉取请求并对旧提交进行软重置(将 PR 更改移动到暂存区域),这使我可以测试 PR 更改:以及在我的 IDE 中查看差异。
git fetch origin pull/<PR-id>/head:<BRANCH_NAME>
git checkout BRANCH_NAME
Run Code Online (Sandbox Code Playgroud)
然后对旧提交进行软重置(使用 参见提交列表git log)
git reset --soft <hash_of_old_commit>
Run Code Online (Sandbox Code Playgroud)
例如
git fetch origin pull/<PR-id>/head:<BRANCH_NAME>
git checkout BRANCH_NAME
Run Code Online (Sandbox Code Playgroud)
运行上述命令将提取 PR 的更改并在您的 IDE 版本中显示它们,并且它们不会被提交,您可以在暂存区域中看到差异(就好像这些更改是在本地进行的一样。)
参考:Github 文档参考
| 归档时间: |
|
| 查看次数: |
92115 次 |
| 最近记录: |