手元でちょっとしたファイルのバージョン管理をしたいときにSVNを使ってきたけど、
やっぱりGitに移行した方がブランチをこまめに切れるなどして色々便利だと思ったので移行してみた。
ディレクトリパスの記法など細かなところで手こずったのでここに手順をメモしておく。
前提となる経験・知識
- 以下のいずれかを使ってみたことがある。
- コマンドプロンプト
- Windows PowerShell
- PowerShell Core
- PowerShell
- Gitの「クローン」「コミット」「プッシュ」等の概念を理解している。
やりたいこと
C:\aaa\svn_repo
がSVNリポジトリ(ベアリポジトリ)の場所だとする。C:\aaa\git_repo.git
にGitリポジトリ(ベアリポジトリ)をつくり、これにSVNリポジトリの内容を引き継がせ、クローンして利用したいとする。- SVNリポジトリのコミット履歴はこんな感じになっているとする。(左右のドラッグで各コミットの概要が確認できる)
確認した環境
環境 | バージョン | 備考 |
---|---|---|
Windows 11 Pro | 21H2 | |
TortoiseSVN | 1.14.3 (64bit) | SVNリポジトリの作成・運用に利用した。 |
Git | 2.35.1.windows.2 | 以下の手順で必要。 |
手順
コンソール(PowerShell、コマンドプロンプトなどのいずれか)を開く。
次のコマンドを実行する。
git --version
Gitのバージョン番号が表示されない場合は、Gitがインストールされていないか、あるいはGitへのパスが通っていないので適宜対応する。
次のコマンドを実行し、空のフォルダを作成する。(このフォルダは後で削除する)
mkdir c:\aaa\tmp
次のコマンドを実行する。
git svn clone file:///c/aaa/svn_repo c:\aaa\tmp\
上手くいけばこういう状態になる。

次のコマンドを実行する。これにより、空っぽのGitリポジトリ(ベアリポジトリ)ができる。
cd c:\aaa
mkdir git_repo.git
cd git_repo.git
git init --bare --shared
次のコマンドを実行する。これにより、SVNリポジトリから取得したコミット履歴情報が先ほど作成したGitリポジトリにPushされる。
cd c:\aaa\tmp
git push --mirror c:\aaa\git_repo.git
次のコマンドを実行し、GitリポジトリにPushされたコミット履歴を確認する。確認を終了する場合はキーボードの「q」を押す。
cd c:\aaa\git_repo.git
git log
コミット履歴が確認できたら、c:\aaa\tmp
フォルダは要らないので削除する。
c:\aaa\tmp
フォルダのローカルリポジトリはPush先が “Subversion” に設定されており、変更をPushしようとしても先ほど作成した c:\aaa\git_repo.git
にはPushできないのでもう要らない。
ここまでできたら、c:\aaa\git_repo.git
をクローンして使っていこう!
(引き続きGitコマンドを使っていってもよいし、SourceTreeやGitKrakenなどのクライアントツールを使ってもよい)