1. 程式人生 > >git代碼倉庫遷移(從github到oschina)【轉】

git代碼倉庫遷移(從github到oschina)【轉】

mit tail name usr done git blank com detail

轉自: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

name=${name%.*} #截取 core-lib
echo "-------------------------git migrate -------------------------"
echo "-----from" $1
echo "-----to " $tar
echo "-------------------------git clone -------------------------"
echo "-----from" $1
git clone $1
echo "-------------------------finish clone-------------------------"
echo "-------------------------change dir -------------------------"
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)【轉】