リモートのSVNリポジトリをGitへ移行

前提:Macでの作業です。
※SVNから移行時にgit svnが使えない場合

1.リモート側に空のリポジトリを用意する

リモートのGitに、まずは空のリポジトリを用意します。
空のリモートリポジトリ作成方法

2.クライアント側にSVNからクローンしたGitローカルリポジトリを作成する

適当なフォルダを作成し、そこに移動
mkdir /ローカルにフォルダ作成
cd /ローカルにフォルダ作成

git svn clone -s –prefix=origin/ リモートのSVNのプロジェクトパス
変更履歴、改訂まで全て取れる
※ちなみにbranchやtagsも丸ごと移行したい場合は、
git svn clone -s –prefix=svn/ リモートのSVNのプロジェクトパス
として、目印にsvnを付与、後ほど、grepかループ処理でbranch、tagsを作成する必要あり

SVNからcloneすると
Ignoring error from SVN, path probably does not exist
エラーが出て空のGitリポジトリが作成されてしまう場合の対策

これでローカルにgitリポジトリが完成
cat .git/config
で、gitの設定内容が確認できる

3.クライアントからGitローカルリポジトリをリモートへプッシュ

リモート先(origin)を登録する
git remote add origin ssh://ユーザ名@gitサーバー/リモートに作成した空リポジトリのルートからのパス.git
※設定削除する場合
git remote rm origin

反映確認
cat .git/config

masterをプッシュ
git push origin master

※branch、tagsなどもプッシュする場合は、
git push -u origin –all
git push -u origin –tags

これで、SVNの情報をGitサーバーに移行できました。
お疲れ様でした!
※ちなみに空のディレクトリは移行できません。

このままだとmasterにいる状態なので、developブランチを作成し作業ブランチを変更します。

4.リモート側でブランチを確認

リモートリポジトリの直下でbranchを確認します。
git branch
masterがあるはず

リモートにdevelopブランチを作成します。
ブランチを切る
git branch develop
これでdevelopブランチが完成
git branchすると、
* develop
master

5.クライアント側で動作確認

cd ローカルのgitプロジェクトパス

最新情報を取得
git fetch

リモートのブランチ一覧を取得
git branch -a
develop
* master

git checkout -b ローカルブランチ リモートブランチ
でローカルにチェックアウト
オプション-bで、ブランチ自動切り替え

ソースツリーの場合
ソースツリーの管理画面から、新規リポジトリ>urlからクローンで、
ssh://ユーザー名@gitサーバー/リモートのプロジェクトパス.git
で完成。

 

余談
gitの設定情報追加
ユーザー名、eメール登録
git config user.name “ユーザー名”
git config user.email “Emailアドレス”

追加してもしなくても。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です