git代码仓库迁移(从github到oschina)【转】

本文介绍了一种使用自定义脚本将GitHub上的项目批量迁移到OsChina的方法。通过编写Shell脚本实现项目的克隆、分支跟踪及推送等功能,简化了迁移流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/a5244491/article/details/44807937

因为一些特殊原因,需要将公司原来的代码仓库从github移植到oschina上去,项目手工操作很麻烦。自己整理了一下,写了简单的几个脚本来处理了。

在这之前,必须先手动在新的Git仓库上把项目先建立好,否则是不会成功的。(也许有命令行方式,还请告知,我不会)

1 先建立个空的目录,用来down工程以及处理工程

$ mkdir migrate

2 cd migrate  #进入目录

3 执行自己写的迁移工具

$   gitmigrate git@git.oschina.NET:a5244491/xxxx

若有多个工程可把所有工程的ssh git地址都写到文件中,然后一次性处理。

以下是gitmigrate.sh的代码,使用方法就是gitmigrate $原git仓库上某个项目的ssh地址

#!/usr/bin/env bash
1temp=1是源地址temp=1
name=${temp##*/}  #截取 core-lib.git
#tar="git@git.oschina.net:a5244491/"$name
tar="https://git.oschina.Net/a5244491/"name #tar="git@code.youkuaiyun.com:lianyin2013/"name #tar="git@code.youkuaiyun.com:lianyin2013/"name
name={name%.*}  #截取 core-lib echo "-------------------------git migrate -------------------------" echo "-----from"{name%.*}  #截取 core-lib echo "-------------------------git migrate -------------------------" echo "-----from"
echo "-----to  " tarecho"gitclone"echo"from"tarecho"−−−−−−−−−−−−−−−−−−−−−−−−−gitclone−−−−−−−−−−−−−−−−−−−−−−−−−"echo"−−−−−from"1
git clone 1echo"finishclone"echo"changedir"echo"to"1echo"−−−−−−−−−−−−−−−−−−−−−−−−−finishclone−−−−−−−−−−−−−−−−−−−−−−−−−"echo"−−−−−−−−−−−−−−−−−−−−−−−−−changedir−−−−−−−−−−−−−−−−−−−−−−−−−"echo"−−−−−to"name
cd namegitbranchtrackecho"finishbranchtrack"echo"listbranchtrack"gitbranchecho"changetonewrepo"echo""namegitbranchtrackecho"−−−−−−−−−−−−−−−−−−−−−−−−−finishbranchtrack−−−−−−−−−−−−−−−−−−−−−−−−−"echo"−−−−−−−−−−−−−−−−−−−−−−−−−listbranchtrack−−−−−−−−−−−−−−−−−−−−−−−−−"gitbranchecho"−−−−−−−−−−−−−−−−−−−−−−−−−changetonewrepo−−−−−−−−−−−−−−−−−−−−−−−−−"echo"−−−−−−"tar
git remote set-url origin $tar
echo "-------------------------git fetch all-------------------------"
#git fetch --all
echo "-------------------------tal all-------------------------"
git add .
git commit -m "migrate commit."
echo "-------------------------git push all branchs -------------------------"
git push --all
echo "-------------------------finish git push all branch -------------------------"

git remote -v

 

其中gitbranchtrack

代码如下

#!/usr/bin/env bash

echo "track all branchs exculde master and HEAD"
#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do
    git branch --track {branch##*/}{branch##*/}branch
done
git fetch --all
git pull --all







本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/7047726.html,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值