折腾:
【未解决】Gitlab的旧git仓库迁移到新仓库且保留commit历史记录
期间,再去试试后来知道的
git clone 加上 –mirror参数的流程,看看能否实现整体迁移git项目。
git repo whole transfer
虽然手动操作麻烦点,但是貌似是可行的。
git clone --mirror old-repo-url new-repo cd new-repo git remote remove origin git remote add origin new-repo-url git push --all git push --tags
再去:
cd .. rm -rf new-repo git clone new-repo-url new-repo
好像不错。去操作试试。
git clone --mirror http://xxx:12310/data/data_xxx/appcrawler.git
log
xxx@xxx ~/dev/xxx/crawler/appAutoCrawler/gitlab/transfer git clone --mirror http://xxx:12310/data/data_xxx/appcrawler.git Cloning into bare repository 'appcrawler.git'... remote: Enumerating objects: 310, done. remote: Counting objects: 100% (310/310), done. remote: Compressing objects: 100% (149/149), done. remote: Total 2384 (delta 208), reused 236 (delta 157) Receiving objects: 100% (2384/2384), 1.88 MiB | 1.47 MiB/s, done. Resolving deltas: 100% (1469/1469), done.
但是此处出现的目录是appcrawler.git
ll total 0 drwxr-xr-x 10 xxx CORP\Domain Users 320B 7 15 15:23 appcrawler.git
看起来不正常?
去看看文件:
cd appcrawler.git xxx@xxx ~/dev/xxx/crawler/appAutoCrawler/gitlab/transfer/appcrawler.git master ll total 32 -rw-r--r-- 1 xxx CORP\Domain Users 23B 7 15 15:23 HEAD -rw-r--r-- 1 xxx CORP\Domain Users 238B 7 15 15:23 config -rw-r--r-- 1 xxx CORP\Domain Users 73B 7 15 15:23 description drwxr-xr-x 13 xxx CORP\Domain Users 416B 7 15 15:23 hooks drwxr-xr-x 3 xxx CORP\Domain Users 96B 7 15 15:23 info drwxr-xr-x 4 xxx CORP\Domain Users 128B 7 15 15:23 objects -rw-r--r-- 1 xxx CORP\Domain Users 105B 7 15 15:23 packed-refs drwxr-xr-x 4 xxx CORP\Domain Users 128B 7 15 15:23 refs
果然不正常-》原先项目代码都彻底没了!!!
看来是之前的:
【未解决】Gitlab中尝试通过Transfer project去整体迁移一个git仓库
Transfer失败,导致项目数据丢失了???
那去clone新的git试试?
(虽然Gitlab网页中显示是空的)
git clone http://xxx:12310/data_xxx/appcrawler.git
log
git clone http://xxx:12310/data_xxx/appcrawler.git Cloning into 'appcrawler'... remote: The project you were looking for could not be found. fatal: repository 'http://xxx:12310/data_xxx/appcrawler.git/' not found
找不到:则是正常现象。毕竟的确没Transfer过去。
重新clone,不加mirror试试?
git clone http://xxx:12310/data/data_xxx/appcrawler.git Cloning into 'appcrawler'... remote: Enumerating objects: 310, done. remote: Counting objects: 100% (310/310), done. remote: Compressing objects: 100% (149/149), done. remote: Total 2384 (delta 208), reused 236 (delta 157) Receiving objects: 100% (2384/2384), 1.88 MiB | 1.66 MiB/s, done. Resolving deltas: 100% (1469/1469), done.
结果:
xxx@xxx ~/dev/xxx/crawler/appAutoCrawler/gitlab/transfer/new_appcralwer ll total 0 drwxr-xr-x 22 xxx CORP\Domain Users 704B 7 15 15:28 appcrawler xxx@xxx ~/dev/xxx/crawler/appAutoCrawler/gitlab/transfer/new_appcralwer cd appcrawler xxx@xxx ~/dev/xxx/crawler/appAutoCrawler/gitlab/transfer/new_appcralwer/appcrawler master ll total 120 -rw-r--r-- 1 xxx CORP\Domain Users 27K 7 15 15:28 README.md -rw-r--r-- 1 xxx CORP\Domain Users 2.4K 7 15 15:28 analyzeStart.py -rw-r--r-- 1 xxx CORP\Domain Users 7.2K 7 15 15:28 crawlerStart.py drwxr-xr-x 7 xxx CORP\Domain Users 224B 7 15 15:28 gameAutomation drwxr-xr-x 5 xxx CORP\Domain Users 160B 7 15 15:28 iOSAutomation drwxr-xr-x 24 xxx CORP\Domain Users 768B 7 15 15:28 middleware drwxr-xr-x 7 xxx CORP\Domain Users 224B 7 15 15:28 platformIntegration drwxr-xr-x 13 xxx CORP\Domain Users 416B 7 15 15:28 process -rw-r--r-- 1 xxx CORP\Domain Users 2.6K 7 15 15:28 queryService.py -rw-r--r-- 1 xxx CORP\Domain Users 2.6K 7 15 15:28 queryService1.py -rw-r--r-- 1 xxx CORP\Domain Users 4.5K 7 15 15:28 requirements.txt drwxr-xr-x 6 xxx CORP\Domain Users 192B 7 15 15:28 service drwxr-xr-x 7 xxx CORP\Domain Users 224B 7 15 15:28 src -rw-r--r-- 1 xxx CORP\Domain Users 72B 7 15 15:28 stop_mongod.js drwxr-xr-x 5 xxx CORP\Domain Users 160B 7 15 15:28 tmp drwxr-xr-x 17 xxx CORP\Domain Users 544B 7 15 15:28 tool drwxr-xr-x 5 xxx CORP\Domain Users 160B 7 15 15:28 utils
就是有文件的。
-》说明mirror的clone是没问题的
-》说明之前Transfer失败,并不影响原有此处git仓库数据
-》说明上面看到目录是appcrawler.git 以及其下没有源码 是正常的
那就继续:
发现前面命令中少了个new-repo
重新试试
git clone --mirror http://xxx:12310/data/data_xxx/appcrawler.git appcrawler
log
git clone --mirror http://xxx:12310/data/data_xxx/appcrawler.git appcrawler Cloning into bare repository 'appcrawler'... remote: Enumerating objects: 310, done. remote: Counting objects: 100% (310/310), done. remote: Compressing objects: 100% (149/149), done. remote: Total 2384 (delta 208), reused 236 (delta 157) Receiving objects: 100% (2384/2384), 1.88 MiB | 1.50 MiB/s, done. Resolving deltas: 100% (1469/1469), done.
然后去:
cd appcrawler xxx@xxx ~/dev/xxx/crawler/appAutoCrawler/gitlab/transfer/appcrawler master git status fatal: this operation must be run in a work tree
好像git都支持?
继续试试:
git remote remove origin Note: A branch outside the refs/remotes/ hierarchy was not removed; to delete it, use: git branch -d master
的确有警告,暂时忽略
git remote add origin http://xxx:12310/data_xxx/appcrawler.git
不过在此之前,先去新建一个空项目:
git地址:
继续:
git remote add origin http://xxx:12310/data_xxx/appcrawler.git
继续:
git push --all
结果:
【已解决】迁移Gitlab的git项目期间报错:A default branch e.g. master does not yet exist
然后就可以了:
✘ xxx@xxx ~/dev/xxx/crawler/appAutoCrawler/gitlab/transfer/appcrawler master git push --all Enumerating objects: 2384, done. Counting objects: 100% (2384/2384), done. Delta compression using up to 8 threads Compressing objects: 100% (848/848), done. Writing objects: 100% (2384/2384), 1.88 MiB | 49.28 MiB/s, done. Total 2384 (delta 1469), reused 2384 (delta 1469) remote: Resolving deltas: 100% (1469/1469), done. To http://xxx:12310/data_xxx/appcrawler.git * [new branch] master -> master
再去:
git push --tags
log
git push --tags Everything up-to-date
去新git仓库看看内容是否都有了:
真的全部都有了。
至此,算是整体迁移单个git仓库,且保留历史记录,就OK了。
然后去重新下载新仓库看看
git clone http://xxx:12310/data_xxx/appcrawler.git Cloning into 'appcrawler'... remote: Enumerating objects: 2384, done. remote: Counting objects: 100% (2384/2384), done. remote: Compressing objects: 100% (848/848), done. remote: Total 2384 (delta 1469), reused 2384 (delta 1469) Receiving objects: 100% (2384/2384), 1.88 MiB | 341.00 KiB/s, done. Resolving deltas: 100% (1469/1469), done.
下载后,去看看大小:
有7M多。
去VSCode中看看:
代码也是对的。
【总结】
此处,想要把git仓库,整体迁移,且保留全部历史commit提交记录,步骤是:
git clone --mirror old-repo-url new-repo cd new-repo git remote remove origin git remote add origin new-repo-url git push --all git push --tags
后记[可选]:
cd .. rm -rf new-repo git clone new-repo-url new-repo
其中把new-repo-url和 new-repo 换成你自己的仓库
此处自己的操作:
(1)以镜像方式下载复制代码
git clone --mirror http://xxx:12310/data/data_xxx/appcrawler.git appcrawler
说明:
此处的:
git clone --mirror <url to ORI repo> temp-dir
等价于:
git clone <url to ORI repo> temp-dir git branch -a git checkout branch-name git fetch --tags git tag git branch -a
(2)删除本地的远端的分支
cd appcrawler git remote remove origin
其中会有提示,意思好像是:有其他额外的分支?
总之可以忽略不管。
注:
- git remote remove origin
- 另一种写法:
- git remote rm origin
(3)添加远端地址为新仓库
git remote add origin http://xxx:12310/data_xxx/appcrawler.git
(4)提交上传所有代码和标签
上传所有代码:
git push --all
或:
git push origin --all
和 所有标签:
git push --tags
即可。
转载请注明:在路上 » 【已解决】Gitlab中尝试用clone加mirror参数实现git仓库整体迁移且带历史提交日志