大家好,我目前正试图将一个有21,000个标签和800个分支的git repo从bitbucket迁移到github.com,遇到以下问题:
git push --mirror origin
命令失败,内部服务器错误。- 然而,单个分支可以一次成功地推送一个。示例
git push origin develop
将push开发分支该空目录。
- 然而,单个分支可以一次成功地推送一个。示例
- 没有大于50MB的文件,这需要大的文件存储空间。我们之前运行bfg清理了一些git历史中不需要的文件。
我们可以做一些清理,将分支总数限制在500左右(包括发布分支),但所有的标签都是内部包装所必需的。
有没有办法运行git push --mirror origin
没有github有内部服务器错误?
指出http协议设置为500MB,因此写入速度更快。SSH会写得很慢,所以我更喜欢HTTP协议,除非有人建议如何提高SSH传输速度。
Git配置设置加速https(否则上传需要大约25-45分钟在214KiB/sgit config --global http.postBuffer 524288000
git clone --mirror <https://git.bitbucket.url>
git remote set-url origin <https://github.com.url>
git push --mirror
Pushing to https://github.com/<USER_ID>/YOUR_APP.git
Enumerating objects: 308119, done.
Counting objects: 100% (308119/308119), done.
Delta compression using up to 12 threads
Compressing objects: 100% (91394/91394), done.
Writing objects: 100% (308119/308119), 350.82 MiB | 529.07 MiB/s, done.
Total 308119 (delta 205766), reused 308103 (delta 205750), pack-reused 0
POST git-receive-pack (370558594 bytes)
remote: Resolving deltas: 100% (205766/205766), done.
remote: Internal Server Error
Everything up-to-date
当使用相同的方法,但与SSH我得到一个慢得多的上传(~200-400 KiB/s),但错误显示为每个标签和分支。(见下文)
[remote failure] example_branch_v2 -> example_branch_v2 (remote failed to report status)
到目前为止,推送到github.com并执行此迁移的唯一方法是手动推送每个分支。如果这是唯一的解决方案,我将需要编写一个迭代脚本。
有没有人有过这样的经验,并且成功地配置了一个可以让我直接将--mirror
推送到新的github.com repo的配置?
谢谢!
对于每个分支迭代确实是第一种方法:
for branch in "$(git for-each-ref --format='%(refname:short)' refs/heads)"; do
git push -u origin ${branch}
done
唯一的其他方法是将一个bundle传输到服务器,这在这里是不可能的(github.com
)。