我找到了这个要点: https://gist.github.com/kennethreitz/3709868
我正在使用bitbucket,我正在寻找类似的功能。
你能帮帮我吗? 谢谢答案 0 :(得分:16)
可以使用以下方法从Bitbucket Server的拉取请求中获取代码:
git fetch origin refs/pull-requests/$PR_NO/from:$LOCAL_BRANCH
答案 1 :(得分:14)
我发现this answer并认为实际上可以获取bitbucket上的pull请求的refs。
但事实并非如此。
OP的问题的答案是 不可能 :there's been an open feature request issue about it未经答复且无人看管 4 5 六年年。
解决方法?
您可以将PR作为可下载的.patch
文件获取,并将其应用于您手动创建的新分支。但您无法轻松应用更新。
我想出了另一条出路,我已经实现了in git-repo,所以每个人都可以使用它。我正在做的是使用API来获取PR的远程和分支,并自动在本地创建新的上游和分支。这样你就可以从PR海报上获得更新。缺点是git遥控器的混乱。
答案 2 :(得分:6)
我关注了这篇文章Pull request Fetching。
它起作用了,但是我发现我只需要在当前仓库中添加一行,而不是创建一个民间仓库和一个上游仓库。运行此行
git config --add remote.origin.fetch '+refs/pull-requests/*/from:refs/remotes/origin/pr/*'
您还可以将其手动添加到项目中的.git / config文件中。
下一步运行git pull
,您应该会看到一个列表:
然后,您可以运行git checkout origin/pr/666
来获取拉取请求的更改。
答案 3 :(得分:2)
这适用于bitbucket。其他服务器可能具有不同的refs:
( refspecs )或根本没有refs:
。
首先,您需要添加远程存储库的拉取请求refs:
。要对存储库执行此操作(例如,别名为“上游”):
git config --add remote.upstream.fetch '+refs/pull-requests/*/from:refs/remotes/upstream/pull-requests/*'
也就是说,您在git .config
文件上添加了最后一行:
[remote "origin"]
url = ssh://git@git.blablabla.net/~user/repository.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/pull/*/head:refs/remotes/origin/pull-requests/*
然后,如果您执行远程 fetch ,您应该会看到(同时)所有拉取请求的检索:
git fetch upstream
From ssh://git.blablabla.net/somepath/repository
* [new ref] refs/pull-requests/1188/from -> upstream/pull-requests/1188
* [new ref] refs/pull-requests/1741/from -> upstream/pull-requests/1741
* [new ref] refs/pull-requests/2394/from -> upstream/pull-requests/2394
最后,您可以签出您喜欢的拉取请求:
git checkout pull-requests/2723
已在专用bitbucket服务器19/02/27上成功测试。
答案 4 :(得分:0)
似乎最简单的方法仍然是获取请求请求的补丁。根据{{3}}的回答,this question的评论仍然是唯一的方法。它使用Alexandre调用。
我使用了以下bash脚本:
USER=username
PASSWORD=password
REPO=repo-name
PULL_NO=42
OUTPUT_FILE=output.patch
# Add -i to include the HTTP-header in the output for debugging
curl -u $USER:$PASSWORD https://bitbucket.org/api/2.0/repositories/$USER/$REPO/pullrequests/$PULL_NO/patch -L -o $OUTPUT_FILE
将其保存到名为pull-patch.sh
的文件中,并在环境变量中填写您的帐户详细信息。该脚本要求您已安装curl
(例如sudo apt install curl
)。然后运行:
chmod +x pull-patch.sh
./pull-patch.sh
应该从拉取请求中创建一个名为output.patch
的文件。
答案 5 :(得分:0)
当无法签出请求请求时,一个诀窍是您可以签出该请求的最后提交
javaOptions ++= {
val props = sys.props.toList
props.map {
case (key, value) => s"-D$key=$value"
}
},
答案 6 :(得分:0)
在bitbucket中,您可以做的是
git config remote.origin.fetch "+refs/heads/:refs/remotes/origin/"
然后
git fetch
之后,您可以签出您想要的分支
git checkout BRANCH_NAME
P.S:希望bitbucket可以解决此问题https://jira.atlassian.com/browse/BCLOUD-5814
答案 7 :(得分:0)
我发现这有点困难,因此,我尝试了另一种方法。如果某人在bitbucket中向我的回购请求拉取请求,我会用他的名字(bill)来设置他的(bill)来源。然后到这个-
git checkout -b bill-auth bill/bill-auth
这里bill
是贡献者回购源/链接,然后bill-auth
是他的分支名称。
在这里,我要创建一个与他的(bill)功能分支同名的分支。
答案 8 :(得分:0)
git fetch origin refs / pull-requests / $ PR_NO / merge-适用于Butbucket v5.14.1