我想镜像克隆一个Bitbucket存储库到另一个Bitbucket存储库.我用shell脚本管理它,它执行以下操作:
git clone --mirror <sourceUrl>
git remote set-url --push origin <targetUrl>
git push --mirror
Run Code Online (Sandbox Code Playgroud)
现在我在推送时遇到以下错误,因为Bitbucket不允许推送拉取请求(在源Bitbucket上创建):
remote: You are attempting to update refs that are reserved for Bitbucket's pull
remote: request functionality. Bitbucket manages these refs automatically, and they may
remote: not be updated by users.
remote:
remote: Rejected refs:
remote: refs/pull-requests/21/from
remote: refs/pull-requests/23/from
remote: refs/pull-requests/23/merge
remote: refs/pull-requests/24/from
remote: refs/pull-requests/24/merge
To ...
! [remote rejected] refs/pull-requests/21/from -> refs/pull-requests/21/from (pre-receive hook declined)
! [remote rejected] refs/pull-requests/23/from -> refs/pull-requests/23/from (pre-receive hook declined)
! [remote rejected] refs/pull-requests/23/merge -> refs/pull-requests/23/merge (pre-receive hook declined)
! [remote rejected] refs/pull-requests/24/from -> refs/pull-requests/24/from (pre-receive hook declined)
! [remote rejected] refs/pull-requests/24/merge -> refs/pull-requests/24/merge (pre-receive hook declined)
error: failed to push some refs to '...'
Run Code Online (Sandbox Code Playgroud)
我通过使用以下解决方法调整fetch refs,从http://christoph.ruegg.name/blog/git-howto-mirror-a-github-repository-without-pull-refs.html解决了问题.
我创建了一个新的裸存储库,并按以下方式调整配置:
[core]
repositoryformatversion = 0
filemode = true
bare = true
[remote "origin"]
fetch = +refs/heads/*:refs/heads/*
fetch = +refs/tags/*:refs/tags/*
url = <sourceUrl>
mirror = true
pushurl = <targetUrl>
Run Code Online (Sandbox Code Playgroud)
然后我执行Git Pull和Git Push,一切都很好.
然而,变通方法不是一个漂亮的解决方案,因为创建一个空的裸存储库然后覆盖它是很奇怪的所以我想要一个替代方案.
问题:
fetch = +refs/*:refs/*可以使用"git clone"命令删除原始配置?这将解决最初拉取拉请求的问题Chr*_*ter 11
感谢伊万.
他的命令解决了我的问题.我只需要将"-r"参数添加到xargs以对空greps做出反应:
git show-ref | cut -d' ' -f2 | grep 'pull-request' | xargs -r -L1 git update-ref -d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2491 次 |
| 最近记录: |