能否从 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/
简而言之:
将 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
是否可以从 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/
简而言之:
将 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