git代碼倉庫遷移(從github到oschina)【轉】
轉自:http://blog.csdn.net/a5244491/article/details/44807937
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
因為一些特殊原因,需要將公司原來的代碼倉庫從github移植到oschina上去,項目手工操作很麻煩。自己整理了一下,寫了簡單的幾個腳本來處理了。
在這之前,必須先手動在新的Git倉庫上把項目先建立好,否則是不會成功的。(也許有命令行方式,還請告知,我不會)
1 先建立個空的目錄,用來down工程以及處理工程
$ mkdir migrate
2 cd migrate #進入目錄
3 執行自己寫的遷移工具
$ gitmigrate [email protected]:a5244491/xxxx
若有多個工程可把所有工程的ssh git地址都寫到文件中,然後一次性處理。
以下是gitmigrate.sh的代碼,使用方法就是gitmigrate $原git倉庫上某個項目的ssh地址
#!/usr/bin/env bash
# $1 是源地址
temp=$1
name=${temp##*/} #截取 core-lib.git
#tar="[email protected].net:a5244491/"$name
tar="https://git.oschina.Net/a5244491/"$name
#tar="[email protected]:lianyin2013/"$name
echo "-------------------------git migrate -------------------------"
echo "-----from" $1
echo "-----to " $tar
echo "-------------------------git clone -------------------------"
echo "-----from" $1
git clone $1
echo "-------------------------finish clone-------------------------"
echo "-----to " $name
cd $name
gitbranchtrack
echo "-------------------------finish branch track -------------------------"
echo "-------------------------list branch track -------------------------"
git branch
echo "-------------------------change to new repo -------------------------"
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
done
git fetch --all
git pull --all
git代碼倉庫遷移(從github到oschina)【轉】