来自pull请求的GitHub克隆?

Fre*_*all 108 git github pull-request

我想从GitHub克隆一个存储库.问题是我不想要主分支; 我希望这个未经批准的拉取请求中的版本.

我可以克隆拉取请求版本而不是主存储库吗?

Chr*_*ial 93

最简单的方法是这样的:

git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

您现在将处于处于拉取请求状态的新分支上.

  • 更好:`git fetch origin pull/<#>/head:<local_branch_name>`([via](https://coderwall.com/p/z5rkga)) (45认同)
  • 我发现自己经常引用这个SO答案,所以我把它放在``alias]`下的`.gitconfig`文件中:`pr ="!f(){git fetch $ 1 pull/$ 2/head:pull_ $ 2; git co pull_ $ 2;}; f"`.这样我只需键入`git pr upstream 62`,接下来就知道了,我从上游进入PR#62的新分支!如果你总是使用`origin`,你可以硬编码而不是`$ 1`,但这会为我转换. (3认同)

ina*_*inc 76

您可以使用命令中的-b选项克隆所需的分支git clone.

在您的情况下,您要克隆的分支是拉取请求的源分支(feature/mongoose-support):

git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你给我甜蜜的糖果.你得到了绿色支票,但是对所有帮助过的人都赞不绝口! (2认同)

wie*_*iks 37

git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH
Run Code Online (Sandbox Code Playgroud)

例如:

$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611
Run Code Online (Sandbox Code Playgroud)

在GitHub上进行更改,提交,推送和打开新的PR


Ian*_*sco 17

你可以按照这个要点中的指示直接检查遥控器,而不必弄清楚他们的存储库和分支.

用法示例

对于我的一个项目(github3.py)我在我的项目中有以下内容 github3.py/.git/config

[remote "github"]
    fetch = +refs/heads/*:refs/remotes/github/*
    fetch = +refs/pull/*/head:refs/remotes/github/pr/*
    url = git@github.com:sigmavirus24/github3.py
Run Code Online (Sandbox Code Playgroud)

第一行是每个远程的标准行,异常github由远程名称替换.这意味着远程头(或该服务器上的分支头)被"映射"到前缀为的本地遥控器github/.所以,如果我git fetch github在GitHub上做了一个分支,但我的机器上已经没有在本地注意到它,它会下载分支,我可以这样切换到它:git checkout -t github/branch_name.

第二行做同样的事情,但它是为拉请求而不是标准的git分支.这就是你看到的原因refs/pull/*/head.它在GitHub上获取每个pull请求的头部并将其映射到github/pr/#.那么如果有人发送拉取请求并且编号为62(例如),那么你会这样做:

git fetch github
git checkout -t github/pr/62
Run Code Online (Sandbox Code Playgroud)

然后你会在一个叫做的本地分支上pr/62(假设它还没有存在).这很好,意味着你不必跟踪其他人的遥控器或分支机构.

  • gist文档的作用是添加一组额外的信息(引用或引用)以从GitHub中获取.当你执行`git fetch github`时,你可以执行`git co -t github/pr /#`.这可以防止您必须复制和粘贴远程URL,找出分支名称等.然后您可以获得名称齐全,简洁准确的分支名称,而无需额外的麻烦.但我明白这看起来似乎势不可挡. (6认同)
  • 为什么不?它以一种方便有效的方式准确地解释了如何做到这一点. (2认同)

adr*_*nks 6

当用户提交拉取请求时,他们要求将某些更改从其克隆的分支合并到另一个用户的存储库.

您想要的更改可以从拉取请求的来源获得.为此,克隆用户的repository(git://github.com/berstend/frappe.git),然后检查他从(feature/mongoose-support)创建拉取请求的分支.


小智 5

git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
Run Code Online (Sandbox Code Playgroud)

我如何获取不属于我的分支的未合并拉取请求?

  • 注意 `git pull` 创建一个合并到当前分支;通常对于 PR,您只想通过`git fetch` 来获取原始作者的代码(然后可以作为 FETCH_HEAD 访问)。如果你确实想要合并,还值得一提的是 `pull/2/merge`(而不是 `pull/2/head`)——这让 GitHub 给你准确的合并提交,如果你现在点击 [Merge] 按钮会发生. (4认同)

Xav*_*hot 5

使用Github官方新的命令行界面

gh repo clone org/repo
cd repo
gh pr checkout 44
Run Code Online (Sandbox Code Playgroud)

其中44是 PR 编号,但也可以是分支机构名称。


请参阅其他详细信息和选项以及安装说明


Par*_*per 5

要将 PR 拉到当前分支,请使用:

git pull origin pull/418/head

这里pull/{no. of PR}/head

在此输入图像描述