67 git github git-pull pull-request
我需要在NServiceBus repo中提取一个特定的pull请求(尚未处理到主流中):
https://github.com/johnsimons/NServiceBus/commit/d8524d53094e8181716e771c1023e968132abc15
这显然不是我的回购,但我需要拉动请求中存在的更改.
做这个的最好方式是什么?
小智 74
要获取存储库中的内容:
git fetch git@github.com:jboss/jboss-common-beans.git refs/pull/4/head
Run Code Online (Sandbox Code Playgroud)
然后用FETCH_HEAD做任何你想做的事:
git checkout -b new-branch FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
小智 56
git pull origin pull/28/head
Run Code Online (Sandbox Code Playgroud)
要么
git fetch origin pull/28/head:28
git checkout 28
Run Code Online (Sandbox Code Playgroud)
Eli*_*les 18
你可以这样做:
1)添加上游远程:
git remote add upstream git@github.com:Particular/NServiceBus.git
Run Code Online (Sandbox Code Playgroud)
2)之后,您可以根据其ID检查对新分支的任何拉取请求:
git fetch upstream pull/PULL_REQUEST_ID/head:NEW_BRANCH_NAME
Run Code Online (Sandbox Code Playgroud)
然后你将有一个名为NEW_BRANCH_NAME
包含PR代码的分支.
如果你经常这样做,你可能想为它设置一些别名.我在.gitconfig中有这个:
[alias]
fetch-pr = "!f(){\
[ -z \"$1\" ] && { echo Usage: git fetch-pr PULL_REQUEST_ID [REMOTE_NAME] [NEW_BRANCH_NAME]; exit 1; }; \
remote=${2:-origin}; \
branch=${3:-pr-$1}; \
git fetch $remote \"pull/$1/head:$branch\"; \
}; f "
pr = "!f(){\
branch=${3:-pr-$1}; \
git fetch-pr \"$@\"; \
git switch $branch; \
}; f "
Run Code Online (Sandbox Code Playgroud)
有了上述,我可以这样做:
git fetch-pr 123 # fetch PR #123 into branch pr-123
git fetch-pr 123 some-branch # fetch PR #123 into some-branch
git pr 123 # fetch and switch to the branch
Run Code Online (Sandbox Code Playgroud)
对于困难的情况(特别是如果你没有签出git-repo),我认为最简单的方法是应用补丁.为此,只需在github上打开pull-request并在URL中添加".patch",下载并应用补丁.
例:
cd cordova-plugin-media
wget https://github.com/apache/cordova-plugin-media/pull/120.patch
patch -p1 < 120.patch
Run Code Online (Sandbox Code Playgroud)