能否从 github 中挑选所有 PR(拉取请求)?

Can cherrypick all PR(pull request) from github?

是否可以从 github 中挑选所有待处理的 PR?

假设我有来自 4 个不同分支存储库的 4 个 PR 等待审查。我需要将它们全部应用到最新的源代码中。

PR#65 Do something
PR#61 Notify this
PR#55 Fix that
PR#42 Show there

我知道我可以 git remote add 所有存储库并一一挑选。但是,我相信会有 easier/shorter 方法来 cherry-pick 所有待处理的拉取请求 我还不知道 ;)

提前致谢

你需要做的是pull每个PR-branch一个一个,按要求解决冲突。

鉴于:

  - PR#65 at https://github.com/author_1/your-repo/tree/PR-branch-name-1
  - PR#61 at https://github.com/author_2/your-repo/tree/PR-branch-name-2
  - PR#55 at https://github.com/author_3/your-repo/tree/PR-branch-name-3
  - PR#42 at https://github.com/author_4/your-repo/tree/PR-branch-name-4

然后在本地拉取每个 PR:
例如PR#65:

git checkout <your-test-branch>
git pull https://github.com/author_1/your-repo.git PR-branch-name-1

您无法挑选提交,因为这些提交不在您的本地存储库中。

你应该像那样获取拉取请求..

1 乘 1: https://help.github.com/articles/checking-out-pull-requests-locally/

一下子: https://gist.github.com/piscisaureus/3342247

简而言之:

将 pr/* 添加到 .git/config


详细:

假设存储库名为 test_repo

$ git remote -v
test_repo     http://github/testA.git (fetch)
test_repo     http://github/testA.git (push)

1。打开 git 配置

vim .git/config

2。在 [remote "test_repo"]

下添加以下行
fetch = +refs/pull/*/head:refs/remotes/test_repo/pr/*

所以它看起来像

[remote "test_repo"]
url = http://github/testA.git
fetch = +refs/heads/*:refs/remotes/test_repo/*
fetch = +refs/pull/*/head:refs/remotes/test_repo/pr/*  <-- this line was added

3。 "git fetch" 也会获取 PR

$ git fetch test_repo

 * [new ref]         refs/pull/16/head -> test_repo/pr/16
 * [new ref]         refs/pull/17/head -> test_repo/pr/17
 * [new ref]         refs/pull/18/head -> test_repo/pr/18
 * [new ref]         refs/pull/19/head -> test_repo/pr/19

4。现在你可以cherry-pick/checkout PR #xx

git cherry-pick test_repo/pr/xx