サルでもわかるTortoiseSVN入門:基本的な操作を解説
🐵 はじめに:バージョン管理って何? なぜ必要なの?
もしあなたが、
- レポートや企画書を作っていて、「やっぱりあの書き方が良かったな…」と前のバージョンに戻したくなったことがある。
- 友達や同僚と一緒に作業していて、「あれ?さっき送ってもらったファイルと違う!」「同じファイルを同時に編集しちゃった!」なんて経験がある。
- プログラムやウェブサイトを作っていて、変更を加えたら動かなくなってしまい、どこが悪かったのか分からなくなった。
- ファイルの管理に「企画書_v1.docx」「企画書_v2.docx」「企画書_最終.docx」「企画書_最終_本当に最終.docx」「企画書_最終_本当に最終_修正.docx」のように、似たような名前のファイルが山のように増えて困ったことがある。
どれか一つでも当てはまるなら、バージョン管理システムがきっとあなたの強力な助けになります! 💪
バージョン管理システムとは、簡単に言うと、ファイルやフォルダの変更履歴を記録・管理するためのシステムです。これにより、過去の状態にいつでも戻したり、複数人で効率的に共同作業したり、いつ誰がどんな変更を加えたのかを正確に追跡したりできるようになります。
「いやいや、私はプログラマーじゃないし…」と思ったあなた!心配いりません。バージョン管理は、プログラマーだけでなく、ドキュメント作成、デザイン、翻訳、研究など、様々な分野で役に立ちます。共同作業はもちろん、一人で作業する場合でも、変更履歴を管理できる安心感は何物にも代えがたいものです。
例えるなら、バージョン管理システムはあなたのタイムマシン付き魔法の保管庫のようなもの。ファイルを入れるたびに、その時点の状態がまるごと記録され、いつでも過去の好きな時点に戻ったり、他の人と安全に共同で中身を書き換えたりできるのです。
SVN (Subversion) とは?
バージョン管理システムにはいくつか種類がありますが、SVN (Subversion) もその一つです。SVNは、一つの中心となる「保管庫」にファイルを置き、複数の人がそこからファイルを取り出して作業し、変更したものをまた「保管庫」に戻す、という仕組みを持っています。
TortoiseSVNとは?
SVNを使うには、通常は「クライアント」と呼ばれるツールが必要です。このクライアントが、「保管庫」とやり取りする窓口になります。TortoiseSVNは、そのSVNクライアントの一つで、特にWindowsで非常に使いやすいのが特徴です。
TortoiseSVNは、Windowsのエクスプローラー(普段ファイルを開いたり閉じたりする画面)に組み込まれて動きます。そのため、特別なソフトを立ち上げなくても、普段通りのファイル操作の延長でバージョン管理の機能を使えるんです。アイコンを見ればファイルの状況が一目でわかるようになっているのも、初心者には嬉しいポイントです。
この記事では、そんなTortoiseSVNを使って、SVNの基本的な操作を「サルでもわかる」くらい丁寧に、順番に解説していきます。難しい言葉は避け、具体的な手順を追って説明するので、ぜひ一緒に手を動かしながら読み進めてみてください。
さあ、バージョン管理の便利な世界へ、一緒に旅立ちましょう! 🚀
1. TortoiseSVNをインストールしよう!
まずは、TortoiseSVNをパソコンに入れましょう。
どこからダウンロードするの?
TortoiseSVNの公式サイトからダウンロードできます。以下のURLにアクセスしてください。
サイトにアクセスすると、ダウンロードページへのリンクがあるはずです。「Download」とか「ダウンロード」といったボタンやメニューを探してみてください。
ダウンロードページに行くと、いくつかダウンロードの選択肢があります。
* 32-bit版か64-bit版か?
* お使いのWindowsが32-bit版か64-bit版かによって選ぶものが違います。最近のパソコンならほとんどが64-bit版だと思いますが、不明な場合は以下の方法で確認できます。
* Windows 10/11の場合:「設定」アプリを開き、「システム」→「バージョン情報」と進むと、「システムの種類」という項目に「64ビット オペレーティング システム」のように表示されています。
* 自分の環境に合った方を選んでクリックしてください。インストーラー(プログラムをインストールするためのファイル)がダウンロードされます。
* 言語パックも忘れずに!
* ダウンロードページには、日本語を含む様々な言語の「Language Packs」(言語パック)もあります。TortoiseSVNを日本語で使いたい場合は、必ず自分のWindowsやTortoiseSVNのバージョン(32-bitか64-bitか)に合った日本語言語パックもダウンロードしてください。
インストールしてみよう!
-
TortoiseSVN本体のインストーラーを実行
- ダウンロードしたファイル(例:
TortoiseSVN-*-x64-svn-*-win64.msiのような名前)をダブルクリックして実行します。 - 「ユーザーアカウント制御」の画面が表示されたら、「はい」をクリックして許可します。
- インストールウィザードが開始されます。「Next(次へ)」をクリックします。
- ライセンス規約が表示されます。内容を確認し、同意する場合は「I accept the terms in the License Agreement(ライセンス契約の条項に同意します)」にチェックを入れて「Next」をクリックします。
- インストールする機能を選びます。通常は全てチェックが入ったままで大丈夫です。「コマンドラインクライアントツール」が必要かどうか聞かれることがありますが、エクスプローラーからTortoiseSVNを使うだけなら必須ではありません。迷ったらチェックを入れたままでOKです。インストール先フォルダも変更する必要がなければそのまま「Next」をクリックします。
- 「Install(インストール)」をクリックするとインストールが始まります。
- インストールが完了したら、「Finish(完了)」をクリックします。パソコンの再起動を求められることがあります。その場合は再起動しましょう。
- ダウンロードしたファイル(例:
-
日本語言語パックをインストール(日本語で使いたい場合)
- ダウンロードした日本語言語パックのファイル(例:
LanguagePack_*-x64_ja.exeのような名前)をダブルクリックして実行します。 - 「ユーザーアカウント制御」の画面が表示されたら、「はい」をクリックして許可します。
- 「はい」をクリックしてインストールを開始します。すぐに終わります。
- 「OK」をクリックしてインストーラーを閉じます。
- ダウンロードした日本語言語パックのファイル(例:
-
TortoiseSVNを日本語化する
- どのフォルダでも良いので、エクスプローラーを開きます。
- フォルダの中の何もないところで右クリックします。
- メニューの中に「TortoiseSVN」という項目が表示されているはずです。そこにマウスカーソルを合わせると、さらにサブメニューが開きます。
- サブメニューの中から「Settings(設定)」をクリックします。(日本語化する前は英語です)
- 設定画面が開いたら、左側のメニューから「General(一般)」を選びます。
- 右側に表示される設定の中に「Language(言語)」というドロップダウンリストがあります。
- このリストをクリックして「日本語」を選択します。
- 「OK」をクリックします。
これで、TortoiseSVNの表示が日本語になったはずです! これ以降、この記事でも日本語メニューの名前を使って説明していきますね。
インストール後の確認
もう一度、エクスプローラーでフォルダの中の何もないところを右クリックしてみてください。
右クリックメニューに「TortoiseSVN」という項目が表示されていれば、インストールは成功です! 🎉
2. バージョン管理の「保管庫」:リポジトリとは?
TortoiseSVNを使う上で、最も基本的な概念が「リポジトリ」です。
リポジトリとは、あなたのファイルやフォルダ、そしてそれらの全ての変更履歴をまとめて保管しておく場所のことです。バージョン管理システムの「心臓部」「中央保管庫」と考えてください。
- あなたや他の人が行った全ての変更は、このリポジトリに記録されていきます。
- 過去のどんな時点の状態も、このリポジトリから取り出すことができます。
- 共同作業をする人たちは、みんなこの同じリポジトリを見て、そこからファイルを取り出し、変更を戻す、という作業を行います。
リポジトリは、あなたのパソコンの中(ローカルリポジトリ)に作ることもできますし、ネットワーク上の別のサーバー(リモートリポジトリ)に作ることもできます。一人で作業するだけならローカルリポジトリでも構いませんが、複数人で共同作業する場合は、みんながアクセスできるリモートリポジトリを使うのが一般的です。
この記事では、まず理解を深めるためにローカルリポジトリを作成して使ってみる方法を説明します。リモートリポジトリの使い方は、既存のリポジトリにアクセスする形で後述します。
ローカルリポジトリを作成してみよう!
自分で一からバージョン管理を始めたい(まだどこにもリポジトリがない)場合に、ローカルリポジトリを作成します。
-
リポジトリを置くための空のフォルダを作る
- エクスプローラーで、リポジトリを置きたい場所に新しいフォルダを作成します。(例:
D:\MySVNRepoなど) - 重要: このフォルダの中に、後でバージョン管理したいファイルやフォルダを直接入れるわけではありません。このフォルダ自体が「保管庫」になります。バージョン管理したいファイルは、後でこのリポジトリから「取り出して」別の場所で作業します。
- エクスプローラーで、リポジトリを置きたい場所に新しいフォルダを作成します。(例:
-
フォルダを右クリックし、「ここでリポジトリを作成(Create repository here)」を選択
- 作成した空のフォルダ(例:
MySVNRepo)の上で右クリックします。 - メニューの中から「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「ここでリポジトリを作成(Create repository here)」をクリックします。
- 作成した空のフォルダ(例:
-
リポジトリ作成の確認
- 「ここでSubversionリポジトリを作成しますか?」という確認ダイアログが表示されます。
- 「はい(Yes)」をクリックします。
- 次に、「フック・スクリプト用のファイルシステムレイアウトを作成しますか?」というダイアログが表示されることがありますが、最初は「いいえ(No)」で大丈夫です。(フックは高度な機能なので、今は気にしなくてOKです。)
- リポジトリが作成されると、「リポジトリの作成は成功しました」というメッセージが表示されます。「OK」をクリックします。
これで、D:\MySVNRepo のような指定したフォルダの中に、SVNのリポジトリが作成されました! このフォルダの中を見ると、自動的にいくつかのファイルやフォルダが作成されているのが分かりますが、これらのファイルは直接編集したり削除したりしないでください。これらがリポジトリの中身そのものです。
既存のリモートリポジトリにアクセスするには?
企業やチームでSVNを使っている場合、既にどこかにリポジトリが作られていて、その場所(URL)を教えてもらうことになります。例えば、
svn://サーバー名/プロジェクト名http://サーバー名/svn/プロジェクト名https://サーバー名/svn/プロジェクト名
のような形式です。このような既存のリポジトリを使う場合は、自分でリポジトリを作成する必要はありません。次のステップの「チェックアウト」から始めます。
3. リポジトリからファイルを取り出す:チェックアウト (Checkout)
リポジトリは「保管庫」ですが、リポジトリの中のファイルを直接編集することはできません。編集するには、リポジトリからファイルを「取り出して」くる必要があります。この操作を「チェックアウト(Checkout)」と呼びます。
チェックアウトを行うと、リポジトリの最新の状態が、あなたのパソコン上の別の場所にコピーされます。このコピーされたフォルダのことを「作業コピー(Working Copy)」と呼びます。
あなたは、この「作業コピー」の中でファイルを編集したり、新しくファイルを作成したり、不要なファイルを削除したりといった作業を行います。
チェックアウトしてみよう!
既に作成済みのリポジトリ(自分で作ったローカルリポジトリでも、チームの共有リポジトリでもOK)からファイルを作業コピーとして取り出してみましょう。まだリポジトリが空っぽでも構いません。
-
作業コピーを置くための空のフォルダを作る
- エクスプローラーで、作業コピーを置きたい場所に新しいフォルダを作成します。(例:
D:\MyProject_WorkingCopyなど) - 重要: このフォルダは、リポジトリのフォルダとは別の場所に作成してください。リポジトリフォルダの「外」に作るのがルールです。また、このフォルダは必ず空っぽにしてください。
- エクスプローラーで、作業コピーを置きたい場所に新しいフォルダを作成します。(例:
-
フォルダを右クリックし、「SVNチェックアウト(SVN Checkout…)」を選択
- 作成した空のフォルダ(例:
MyProject_WorkingCopy)の上で右クリックします。 - メニューの中から「SVNチェックアウト(SVN Checkout…)」をクリックします。
- 作成した空のフォルダ(例:
-
チェックアウトの設定を行う
- 「チェックアウト」ダイアログが表示されます。
- 「リポジトリのURL」: ここに、先ほど作成したリポジトリ、またはチームのリポジトリの場所(URL)を入力します。
- ローカルリポジトリの場合:
file:///D:/MySVNRepoのように、「file:///」の後にリポジトリフォルダのフルパスを入力します。パスの区切りは「\」ではなく「/」を使う点に注意してください。ドライブレターの後ろは「/」が3つです。 - リモートリポジトリの場合: チームから教えられたURL(例:
svn://server/myprojectなど)を入力します。
- ローカルリポジトリの場合:
- 「チェックアウト先のフォルダ」: これは、先ほど右クリックしたフォルダのパスが自動的に入力されているはずです。変更する必要はありません。
- 「リビジョン」: これは、リポジトリのどの時点の状態を取り出すか指定できます。通常は最新の状態を取り出したいので「HEADリビジョン(最新)」のままでOKです。
- その他の設定項目は、最初は気にしなくて大丈夫です。
-
「OK」をクリックしてチェックアウトを実行
- 設定が終わったら「OK」をクリックします。
- TortoiseSVNがリポジトリと通信し、ファイルを作業コピーフォルダにコピーしてきます。リポジトリが空っぽなら、何もファイルはコピーされませんが、SVNの管理下に置かれます。
- 認証情報(ユーザー名やパスワード)を求められる場合があります。リモートリポジトリにアクセスする場合などに必要になりますので、入力して「OK」をクリックしてください。「認証情報を保存」にチェックを入れておくと、次回から入力を省略できます。
- 処理が終わると、完了メッセージが表示されます。「OK」をクリックします。
チェックアウト後のフォルダアイコンの変化
チェックアウトが成功すると、作成した作業コピーフォルダ(例: MyProject_WorkingCopy)のアイコンに、緑色の丸いチェックマークが付いているのが確認できるはずです。
これは、そのフォルダがSVNの「作業コピー」であり、かつリポジトリの最新の状態と「同じ」であることを示しています。素晴らしい!✨
これで、あなたはリポジトリからファイルを取り出し、作業を開始する準備ができました。
4. ファイルをバージョン管理下に置く:追加 (Add)
さて、作業コピーフォルダの中で、いよいよ具体的なファイルを作ったり編集したりする作業に入ります。
ここで新しく作成したファイルやフォルダは、そのままではまだ「SVNの管理下」には置かれていません。つまり、リポジトリには存在しない、あなただけのファイルです。これをSVNの管理下に置き、後でリポジトリに登録できるようにする操作を「追加(Add)」と呼びます。
新しいファイルを追加してみよう!
作業コピーフォルダ内に新しいファイル(例: index.html や report.txt など)を作成し、それをSVNに追加してみましょう。
-
作業コピーフォルダ内に新しいファイルを作成
- チェックアウトした作業コピーフォルダを開きます。
- その中に、新しいテキストファイルでもWordファイルでも何でも良いので、ファイルを作成します。(例:
MyProject_WorkingCopyフォルダの中にmemo.txtという名前で作成)
-
新しいファイルを右クリックし、「TortoiseSVN」→「追加(Add)」を選択
- 新しく作成したファイル(例:
memo.txt)の上で右クリックします。 - メニューの中から「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「追加(Add)」をクリックします。
- 新しく作成したファイル(例:
-
追加されるファイルの確認
- 「追加するファイル」というダイアログが表示され、選択したファイルの名前が表示されます。
- 内容を確認し、「OK」をクリックします。
追加後のファイルアイコンの変化
「追加(Add)」を実行しただけでは、まだそのファイルはリポジトリには登録されていません。あなたの作業コピーの中で、「次はリポジトリに追加する予定です」という状態になっただけです。
追加されたファイルのアイコンには、青いプラスマーク(+)が付いているはずです。これは、「SVN管理下になった新しいファイルで、次のコミットでリポジトリに追加されます」という意味を示しています。
これで、memo.txt はSVN管理下になり、次のステップでリポジトリに登録(コミット)できるようになりました。
5. 作業内容を「保管庫」に記録する:コミット (Commit)
いよいよバージョン管理の核心部分です!
作業コピーで行った変更(ファイルの作成、編集、削除など)は、あなたのパソコンの中にあるだけで、まだリポジトリには反映されていません。これらの変更をリポジトリに登録し、正式な「変更履歴」として記録する操作を「コミット(Commit)」と呼びます。
コミットは、バージョン管理システムを使う上で最も頻繁に行う操作の一つです。こまめにコミットすることで、変更履歴が細かく残り、後で追跡しやすくなります。
コミットしてみよう!
先ほど追加したファイルや、作業コピーで編集したファイルをリポジトリにコミットしてみましょう。
-
コミット対象のフォルダまたはファイルを右クリック
- 変更を加えたファイルが含まれる作業コピーフォルダ全体をコミットしたい場合は、フォルダを右クリックします。
- 特定のファイルだけをコミットしたい場合は、そのファイルを右クリックします。
- メニューの中から「SVNコミット(SVN Commit…)」をクリックします。
-
コミットダイアログの説明
- 「コミット – [作業コピーのパス]」というタイトルのダイアログが表示されます。これがコミットを行うための重要な画面です。
- 「メッセージ」入力欄: ここに、そのコミットでどんな変更を行ったのかを簡潔かつ分かりやすく記述します。これを「ログメッセージ」と呼びます。ログメッセージは、後から変更履歴を振り返る際に非常に役立ちます。「〇〇機能を追加」「××の誤字を修正」「△△のレイアウトを変更」など、具体的な内容を書きましょう。後で見返すのはあなた自身かもしれないし、チームの仲間かもしれません。誰が見ても理解できるように書くのがポイントです。
- ファイルリスト: ダイアログの下半分には、あなたの作業コピーで変更があり、コミットの候補になっているファイルやフォルダが表示されます。
- アイコンが青いプラス(+)のファイルは、あなたが新しく「追加」したファイルです。デフォルトでチェックが入っていて、次のコミットでリポジトリに追加されます。
- アイコンが赤いビックリマーク(!)のファイルは、あなたが内容を「編集」したファイルです。デフォルトでチェックが入っていて、次のコミットで変更内容がリポジトリに登録されます。
- アイコンが赤いマイナス(-)のファイルは、あなたが「削除」したファイルです。デフォルトでチェックが入っていて、次のコミットでリポジトリから削除されます。
- リストのファイルにチェックが入っているものが、今回のコミット対象となります。特にコミットしたくないファイルがあれば、チェックを外すこともできます。
-
ログメッセージを入力し、「OK」をクリック
- ログメッセージの入力欄に、今回の変更内容の説明を記述します。(例:
memo.txt を新規追加しました) - コミット対象のファイルリストを確認します。
- 「OK」をクリックします。
- ログメッセージの入力欄に、今回の変更内容の説明を記述します。(例:
-
コミットの実行
- TortoiseSVNがリポジトリと通信し、変更内容をリポジトリに送信します。
- 処理が終わると、コミットが成功した旨のメッセージが表示されます。リビジョン番号(リポジトリへの変更の記録番号。数字が増えていく)が表示されるので確認しておきましょう。
- 「OK」をクリックしてダイアログを閉じます。
コミット後のアイコンの変化
コミットが成功すると、コミットしたファイルやフォルダのアイコンが、再び緑色のチェックマークに戻るはずです。これは、「あなたの作業コピーの状態が、リポジトリの最新の状態と一致していますよ」という意味です。
これで、あなたの変更内容は無事にリポジトリに記録されました! いつでもこの時点の状態に戻れるようになりましたし、もしリモートリポジトリを使っているなら、他の人もあなたの変更内容を見たり、自分の作業コピーに取り込んだりできるようになりました。
6. ファイルを編集してコミットしてみよう!
ファイルの追加とコミットができるようになったら、次に既存のファイルを編集し、その変更をコミットする流れを試してみましょう。これが最も基本的なサイクルになります。
-
作業コピーのファイルを編集
- 先ほど作成した
memo.txtや、既にリポジトリにあったファイルをテキストエディタなどで開きます。 - 内容を自由に編集します。(例:
memo.txtに新しい行を追加する) - ファイルを保存します。
- 先ほど作成した
-
アイコンの変化を確認
- エクスプローラーで作業コピーフォルダを見ると、編集したファイルのアイコンが赤いビックリマーク(!)に変わっているはずです。
- これは、「このファイルは、リポジトリの最新の状態から変更がありますよ」という意味です。
-
変更内容を確認する
- 編集したファイルを右クリックし、「TortoiseSVN」→「変更を比較(Compare with Base)」を選択します。
- TortoiseMergeという差分表示ツールが起動し、変更内容が表示されます。
- 左側に「BASEリビジョン」(コミット前のリポジトリの最新状態)が表示され、右側に「WORKING COPY」(あなたの現在の作業コピーの状態)が表示されます。
- あなたが変更した箇所が色付きで表示されるので、どこが変わったのか一目で分かります。
- 変更内容を確認したら、TortoiseMergeを閉じます。
-
コミットする
- 編集したファイル(または作業コピーフォルダ全体)を右クリックし、「SVNコミット(SVN Commit…)」を選択します。
- コミットダイアログが表示されます。
- ファイルリストを見ると、編集したファイル(例:
memo.txt)が赤いビックリマークのアイコンで表示され、チェックが入っているはずです。 - ログメッセージを入力します。(例:
memo.txt にToDoリストを追加) - 「OK」をクリックしてコミットを実行します。
-
コミット後のアイコンの変化
- コミットが成功すると、アイコンが再び緑色のチェックマークに戻ります。
この「編集 → 差分確認 → コミット」というサイクルを繰り返すことで、あなたの作業の履歴がリポジトリにどんどん積み重ねられていきます。
7. 他の人の変更を取り込む:更新 (Update)
さて、もしあなたがチームで作業している場合、他の人も同じリポジトリに対してコミットを行うでしょう。他の人がコミットした変更は、あなたの作業コピーには自動的には反映されません。
他の人がコミットした最新の状態を、自分の作業コピーに取り込む操作を「更新(Update)」と呼びます。
更新をすることで、あなたの作業コピーはリポジトリの最新の状態と同じになります。これにより、他の人の作業を取り込めますし、後で自分がコミットする際に「競合」が発生する可能性を減らすことができます。
更新してみよう!
(もし一人で作業している場合は、この操作の効果を実感しにくいかもしれませんが、手順を確認してみましょう。チーム作業を想定した練習として捉えてください。)
-
作業コピーフォルダ全体を右クリックし、「SVN更新(SVN Update)」を選択
- 作業コピーフォルダ(例:
MyProject_WorkingCopy)の上で右クリックします。 - メニューの中から「SVN更新(SVN Update)」をクリックします。
- 作業コピーフォルダ(例:
-
更新の実行
- TortoiseSVNがリポジトリと通信し、あなたの作業コピーがリポジトリの最新の状態と比較されます。
- もしリポジトリの方が新しい(他の人がコミットした変更がある)場合、その変更があなたの作業コピーに取り込まれます。
- 「更新」ダイアログが表示され、どのファイルがどのように更新されたかが表示されます。(例: Added, Deleted, Updated, Mergedなど)
- 処理が終わると、完了メッセージが表示されます。
- 「OK」をクリックしてダイアログを閉じます。
更新後のアイコンの変化
- 更新の結果、あなたの作業コピーがリポジトリの最新の状態と一致すれば、フォルダやファイルのアイコンは緑色のチェックマークのままです。
- もし更新によってファイルが追加されたり、削除されたりした場合、それに応じてアイコンが変化します。
- 更新によって、他の人の変更とあなたの変更が同じファイルで重なり、「競合」が発生した場合は、アイコンが黄色のビックリマークに変化します。(競合については次の章で詳しく説明します)
チームで作業する際は、コミットする前には必ず更新する習慣をつけましょう。これにより、自分のコミットと他の人のコミットが衝突する可能性を減らすことができます。
8. 他の人と同じ場所を変更しちゃった!:競合 (Conflict) とその解決
バージョン管理システムを使って複数人で共同作業していると、どうしても避けられないのが「競合(Conflict)」です。
競合とは、複数の人が同じファイルの同じ箇所を同時に変更し、それぞれがリポジトリにコミットしようとした場合に発生する状態です。
例えば、
1. AさんとBさんが、同じファイル(例: report.txt)を最新の状態に更新しました。(二人の作業コピーは同じ内容です)
2. Aさんが report.txt の10行目を編集し、コミットしました。リポジトリの report.txt が更新されました。
3. Bさんも report.txt の10行目を編集しました。
4. Bさんが自分の変更をコミットしようとしました。しかし、リポジトリの report.txt はAさんのコミットによって、Bさんが編集を始めた時とは別の状態になっています。特に、Bさんが編集した「10行目」がAさんのコミットによって変更されています。
このように、Bさんがコミットしようとした時に、リポジトリが自分の作業を開始した時とは違う状態になっており、しかも自分が変更した箇所がリポジトリでも変更されている場合に、競合が発生します。SVNはどちらの変更を残せば良いか自動的に判断できないため、「誰か、この重なった変更を整理して!」とあなたに助けを求めてくるのです。
競合が発生したファイルは、アイコンが黄色のビックリマーク(!)と赤いビックリマーク(!)が重なったようなマークに変化します。(TortoiseSVNのバージョンによっては黄色のビックリマークだけの場合もあります)
競合を解決してみよう!
競合が発生したら、そのファイルをコミットすることはできません。必ず手動で競合を解消する必要があります。
競合が発生したファイルは、中身を見てみると、SVNが挿入した特別なマーカーによって、どこが競合しているのかが示されています。例えば、以下のような表示になっているはずです。
“`
ここは競合していない安全な部分です。
これはAさんが編集した内容です。
<<<<<<< .mine
これはBさん(自分)が編集した内容です。
=======
これはAさん(他の人)がコミットした内容です。
.rリビジョン番号
ここはまた競合していない安全な部分です。
“`
<<<<<<< .mineから=======までの間が、あなたの作業コピーでの変更です。=======から>>>>>>> .rリビジョン番号までの間が、リポジトリの最新状態にある、他の人の変更です。
競合解決の作業は、この特殊なマーカーを見ながら、あなたの変更と他の人の変更をどのように組み合わせるか(あるいはどちらか一方を採用するか)を判断し、マーカーごとファイルを綺麗に編集することです。
TortoiseSVNには、この競合解決を助けてくれる便利なツールがあります。
-
競合ファイルを確認する
- 競合が発生したファイル(アイコンが黄色/赤のビックリマーク)を右クリックします。
- 「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「競合を編集(Edit conflict)」を選択します。
- これにより、TortoiseMergeなどの競合解決ツールが起動します。
-
競合解決ツール(TortoiseMerge)で編集する
- TortoiseMergeが開くと、通常は3つのパネルが表示されます。
- 左側: 他の人の変更(リポジトリの最新状態)
- 右側: あなたの変更(作業コピー)
- 下側または中央: 最終的にリポジトリにコミットしたい内容(ここで編集する)
- ツールを使って、競合箇所をどのように組み合わせるかを選択したり、手動で編集したりします。どちらかの変更を採用したり、両方の変更をうまく組み合わせたりします。
- 競合マーカー(
<<<<<<<,=======,>>>>>>>)が全て削除されるように編集します。 - 編集が終わったら、ファイルを保存します。
- TortoiseMergeが開くと、通常は3つのパネルが表示されます。
-
競合が解決したことをSVNに伝える
- 競合を解決し、ファイルを保存したら、そのファイルを右クリックします。
- 「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「競合を解決(Resolved)」を選択します。
- これは「このファイルの競合は、手動で編集して解決しましたよ!」とSVNに伝える操作です。解決済みのファイルをコミットするためには、必ずこの操作が必要です。
- 競合が解決されると、ファイルのアイコンが赤いビックリマークに変化します。(「変更はあるけど、競合はもうないよ」という意味です)
-
解決済みのファイルをコミットする
- 競合解決済みのファイルを右クリックし、「SVNコミット(SVN Commit…)」を選択します。
- コミットダイアログが表示され、ファイルリストに解決済みのファイルが表示されます。
- ログメッセージには「〇〇ファイルの競合を解決」といった内容を含めると、後から履歴を見た時に分かりやすいです。
- 「OK」をクリックしてコミットを実行します。
これで、競合が解決され、あなたの編集内容と他の人の編集内容が統合されたファイルがリポジトリにコミットされました。競合解決は最初は少し難しく感じるかもしれませんが、慣れてくればスムーズにできるようになります。競合を恐れず、こまめに更新・コミットを行うことで、大きな競合の発生を防ぐことができます。
9. その他の便利なTortoiseSVNの機能
ここまでで、チェックアウト、追加、コミット、更新、競合解決といった基本的な操作ができるようになりました。これだけでもバージョン管理のメリットを十分に受けられますが、TortoiseSVNには他にも便利な機能がたくさんあります。いくつか代表的なものを紹介します。
変更内容を詳しく見る:差分を表示 (Show changes / Diff)
コミットする前や、更新して他の人の変更を取り込んだ後に、「具体的にどこが変わったのかな?」と詳しく確認したいことがありますよね。そんな時に使うのが「差分を表示」機能です。
差分を表示する方法はいくつかあります。
-
作業コピーのファイルと、そのファイルの元になったリポジトリの状態(チェックアウトまたは更新した時点)との差分を見る:
- 変更を加えたファイル(アイコンが赤いビックリマークのファイル)を右クリックします。
- 「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「変更を比較(Compare with Base)」を選択します。
- TortoiseMergeが起動し、作業コピーの状態(WORKING-COPY)と、その元になったリポジトリのリビジョン(BASE)との差分が表示されます。
-
作業コピーのファイルと、リポジトリの最新状態との差分を見る:
- 変更を加えたファイル(アイコンが赤いビックリマークのファイル)を右クリックします。
- 「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「変更を比較(Compare with latest from repository)」を選択します。
- TortoiseMergeが起動し、作業コピーの状態(WORKING-COPY)と、リポジトリのHEADリビジョン(最新)との差分が表示されます。更新せずにコミットしようとしている場合などに、他の人の最新の変更と自分の変更がどう違うかを確認するのに便利です。
-
あるリビジョンと別のリビジョンの差分を見る:
- ログを表示(後述)機能を使います。ログダイアログで二つのリビジョンを選択し、右クリックメニューから「変更点を比較」を選択します。これで、その二つのリビジョン間でリポジトリ全体または特定のファイルがどう変わったかを確認できます。
TortoiseMergeは、差分を色分けして表示してくれるので、テキストファイルの変更内容を確認するのに非常に強力なツールです。
変更の歴史をたどる:ログを表示 (Show Log)
「あのファイル、いつ誰がどんな変更したんだっけ?」「数日前の状態に戻したいな…」と思ったことはありませんか? そんな時に役立つのが「ログを表示」機能です。
この機能を使うと、リポジトリに加えられた全てのコミット履歴を一覧で確認できます。
-
ログを表示する方法:
- 作業コピーのフォルダ全体、または特定のファイルを右クリックします。
- メニューの中から「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「ログを表示(Show Log)」を選択します。
-
ログダイアログの見方:
- ログダイアログには、リポジトリへのコミット履歴が上から新しい順に表示されます。
- 各行には、
- リビジョン番号(Revision): リポジトリへの変更の記録番号です。コミットごとに1つ増えます。
- 作者(Author): そのコミットを行ったユーザー名です。
- 日付(Date): そのコミットが行われた日時です。
- メッセージ(Message): そのコミット時に入力したログメッセージです。
- 変更されたパス(Changed Paths): そのコミットで追加、編集、削除などが行われたファイルやフォルダの一覧です。
-
ログダイアログからできること:
- 特定のリビジョンの差分を見る: ログリストで一つのリビジョンを選択し、下の「変更されたパス」リストからファイルを選択すると、そのファイルのそのリビジョンでの変更内容(直前のリビジョンとの差分)を確認できます。複数のリビジョンを選択して右クリックし、「変更点を比較」を選ぶと、それらのリビジョン間の差分を確認できます。
- 以前のリビジョンに戻す (Revert changes from this revision): 特定のコミットで行われた変更だけを取り消したい場合に、そのリビジョンを選択して右クリックし、「このリビジョンから変更を戻す(Revert changes from this revision)」を選択します。これは、「過去の変更を取り消す」という新しい変更を作業コピーに適用する操作なので、その後コミットが必要です。
- 特定のリビジョンを作業コピーに反映する (Update to revision): 作業コピー全体を、過去の特定のリビジョン時点の状態に戻したい場合に、そのリビジョンを選択して右クリックし、「リビジョンへ更新(Update to revision…)」を選択します。これは、現在の作業コピーの状態を破棄して、過去の状態に置き換える操作です。注意して使いましょう。
ログ機能は、プロジェクトの歴史を振り返ったり、問題が発生した原因を探ったり、過去の状態に戻したりする際に非常に強力な機能です。ログメッセージをしっかり書くことが、ここで活きてきます!
作業コピーの変更を取り消す:元に戻す (Revert)
「あー!さっきから色々編集してたけど、やっぱり全部無かったことにしたい!」と思ったことはありませんか? まだコミットしていない作業コピーでの変更を、リポジトリからチェックアウト/更新した時の状態に戻したい場合に使うのが「元に戻す(Revert)」機能です。
-
元に戻す方法:
- 作業コピーの中で、変更を取り消したいファイルやフォルダを右クリックします。(アイコンが赤いビックリマークや青いプラスになっているもの)
- メニューの中から「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「元に戻す(Revert…)」を選択します。
-
元に戻すダイアログ:
- 「元に戻す」ダイアログが表示され、選択したファイルやフォルダのうち、変更があるもの(元に戻せるもの)が表示されます。
- 元に戻したいファイルにチェックが入っていることを確認します。
- 「OK」をクリックします。
- 確認メッセージが表示されるので「はい」をクリックします。
これで、選択したファイルは、直前にコミットまたは更新した時の状態に戻りました。作業コピーでの変更は破棄されます。この操作はローカルの作業コピー内で行われるため、リポジトリへの影響はありませんし、コミットも不要です。
ファイルやフォルダの名前を変更/削除する (Rename / Delete)
SVN管理下のファイルやフォルダの名前を変更したり、削除したりする場合、Windowsのエクスプローラーで直接行うのではなく、TortoiseSVNの機能を使うことを強く推奨します。エクスプローラーで直接操作すると、SVNがその変更を正しく追跡できなくなり、問題が発生することがあります。
-
名前の変更 (Rename):
- 名前を変更したいファイルやフォルダを右クリックします。
- 「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「名前の変更(Rename…)」を選択します。
- 新しい名前を入力して「OK」をクリックします。
- ファイルのアイコンが赤いビックリマークになります。これは、「名前が変更された状態」であることを示しており、この変更をリポジトリに反映するにはコミットが必要です。
-
削除 (Delete):
- 削除したいファイルやフォルダを右クリックします。
- 「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「削除(Delete)」を選択します。
- 確認メッセージが表示されるので「OK」をクリックします。
- ファイルやフォルダが作業コピーから削除されますが、アイコンには赤いマイナスが表示されたままになることがあります。これは、「次のコミットでリポジトリから削除される予定です」という状態であることを示しており、この変更をリポジトリに反映するにはコミットが必要です。
これらの操作も、コミットするまでは作業コピー内での「次のコミットでこうしますよ」という予定の状態です。確定するには必ずコミットを行ってください。
リポジトリの中を直接見る:リポジトリブラウザ (Repo-Browser)
あなたの作業コピーを通してではなく、リポジトリの中身そのものを直接見たい場合があります。そんな時に使うのが「リポジトリブラウザ」です。
-
リポジトリブラウザの起動方法:
- 作業コピーのフォルダを右クリックします。
- メニューの中から「TortoiseSVN」にマウスカーソルを合わせます。
- サブメニューの中から「リポジトリブラウザ(Repo-Browser)」を選択します。
- リポジトリのURLを入力または選択して「OK」をクリックします。
-
リポジトリブラウザで見えること:
- リポジトリのフォルダやファイルの構造を、エクスプローラーのようにツリー形式で見ることができます。
- 特定のリビジョンを選択して、その時点でのリポジトリの状態を見ることができます。(デフォルトは最新のHEADリビジョン)
- ファイルを選択して右クリックすると、そのファイルのログを見たり、内容を表示したり、差分を表示したりできます。
リポジトリブラウザは、リポジトリ全体の構造を把握したり、作業コピーを持っていないファイルの内容を確認したりするのに便利です。
10. チーム開発で気持ちよくSVNを使うために
SVNは複数人での共同作業を効率化するためのツールです。チームで使う上で、少し意識しておくと良い点があります。
- こまめな更新とコミット:
- 自分の作業を始める前には必ず「更新(Update)」を行い、他の人の最新の変更を自分の作業コピーに取り込みましょう。
- ある程度のまとまった作業が終わったら、すぐに「コミット(Commit)」しましょう。小さな変更でもこまめにコミットすることで、他の人があなたの変更を早く取り込めるようになり、競合の発生を防ぎやすくなります。また、何か問題が起きた時に、原因となった変更(コミット)を特定しやすくなります。
- コミット前の確認:
- コミットする前には、必ず「変更を比較(Compare with Base)」などで、自分が本当にコミットしたい内容になっているかを確認しましょう。
- コミットダイアログで、意図しないファイルにチェックが入っていないか(例えば、テスト用のゴミファイルなど)も確認しましょう。
- ログメッセージを丁寧に書く:
- ログメッセージは、後からあなた自身やチームのメンバーが変更履歴を振り返るための重要な手がかりです。「修正」「変更」といったあいまいな内容ではなく、「○○機能の××というバグを修正」「△△の項目の内容を追記」「レイアウト調整(ヘッダー部分)」のように、誰が、何を、なぜ変更したのかが分かるように具体的に記述しましょう。
- バイナリファイルの扱いに注意:
- Wordファイル、Excelファイル、画像ファイル(JPG, PNG)、PDFファイルなどの「バイナリファイル」は、テキストファイルのように変更内容を細かく比較したり、競合を自動でマージしたりすることができません。バイナリファイルを変更してコミットすると、基本的にそのファイルは丸ごと新しいバージョンに置き換えられます。複数人で同じバイナリファイルを頻繁に編集すると、競合が起きやすく、手動での解決が困難になるため、バイナリファイルの共同編集には注意が必要です。役割分担をする、編集時は必ずロックする(TortoiseSVNの機能で可能ですが、少し高度なためここでは割愛します)などの工夫が必要になる場合があります。
これらの点に気をつけることで、チーム全体でスムーズかつ安全にSVNを活用できるようになります。
11. よくあるトラブルと対処法
TortoiseSVNを使っている上で、初心者の方が戸惑いがちな状況と、その対処法をいくつか紹介します。
- アイコンが表示されない!
- TortoiseSVNのアイコンオーバーレイ(ファイルの右上の緑や赤のマーク)が表示されない場合、いくつかの原因が考えられます。
- TortoiseSVNが正しくインストールされていない: もう一度インストールを試みてください。再起動が必要な場合もあります。
- Windowsのアイコンオーバーレイの上限に達している: Windowsでは、同時に表示できるアイコンオーバーレイの数に上限があります。他のクラウドストレージサービス(Dropbox, OneDrive, Google Driveなど)もアイコンオーバーレイを使用するため、上限に達してしまうことがあります。この場合、TortoiseSVNのアイコンが表示されないことがあります。対処法としては、TortoiseSVNの設定画面で、表示するアイコンの種類を減らしたり、レジストリを編集してアイコンオーバーレイの優先順位を変更したりする方法がありますが、少し専門的な知識が必要です。まずはPCの再起動を試してみてください。
- SVN管理下にないフォルダを見ている: アイコンオーバーレイは、SVNの作業コピーフォルダ内でしか表示されません。SVN管理下にない普通のフォルダでは表示されません。
- TortoiseSVNのアイコンオーバーレイ(ファイルの右上の緑や赤のマーク)が表示されない場合、いくつかの原因が考えられます。
- コミットしようとしたらエラーになった(ロックされているなど)
- 他の人が同じファイルをロックしていたり(これはSVNではあまり一般的ではありませんが、設定によっては可能です)、リポジトリ側で何らかの問題が発生していたりする可能性があります。
- ネットワークの問題でリポジトリに接続できない場合もあります。
- まずは「更新(Update)」を試してみてください。他の人の変更を取り込むことで解決する場合があります。
- エラーメッセージをよく読んで、何が問題なのかを確認しましょう。解決できない場合は、チームの管理者や経験者に相談するのが良いでしょう。
- 競合を解決したはずなのにコミットできない
- 競合ファイルを編集した後、「競合を解決(Resolved)」を実行し忘れている可能性があります。必ず「競合を解決」操作を行ってからコミットしてください。
- ファイルに残っている競合マーカー(
<<<<<<<,=======,>>>>>>>)を完全に削除できていない可能性があります。TortoiseMergeなどのツールを使って、マーカーが残っていないか再度確認し、ファイルを綺麗に編集してください。
- コミットしようとしたら「最新ではないためコミットできません」というエラーが出た
- これは、あなたが変更を加えてからコミットするまでの間に、他の人が同じリポジトリにコミットを行った場合に表示されます。あなたの作業コピーがリポジトリの最新状態よりも古い(Staleな)状態になっているということです。
- この場合は、まず「SVN更新(SVN Update)」を行って、他の人の変更を自分の作業コピーに取り込んでください。更新によって競合が発生する可能性がありますので、その場合は競合解決を行ってください。
- 更新と競合解決が完了し、作業コピーがリポジトリの最新状態になったら、改めてコミットを試みてください。
焦らず、エラーメッセージをよく読み、基本的な操作(更新、競合解決)を順番に試してみるのが対処のコツです。
12. まとめ:バージョン管理のメリットと次のステップ
ここまで、TortoiseSVNを使ったSVNの基本的な操作(チェックアウト、追加、コミット、更新、競合解決など)を順番に見てきました。最初は少し難しく感じる部分もあったかもしれませんが、これらの操作をマスターすれば、バージョン管理の大きなメリットを享受できるようになります。
バージョン管理システムを使うことのメリットを改めて振り返ってみましょう。
- 変更履歴の追跡: いつ、誰が、どんな変更を加えたのかが全て記録されます。
- 過去の状態に戻せる: どんな時点のファイルの状態にも簡単vに戻したり、過去の変更を取り消したりできます。
- 共同作業の効率化: 複数人で一つのファイルを安全に共同編集できます。他の人の作業を取り込んだり、自分の作業を共有したりするのがスムーズになります。
- バックアップ: リポジトリ自体がファイルのバックアップになります。
- 実験や試行錯誤がしやすい: 失敗しても簡単に元に戻せるという安心感があるので、新しいアイデアを試したり、大胆な変更を加えたりしやすくなります。
TortoiseSVNは、Windowsユーザーにとって、これらのメリットを最も手軽に享受できるツールの一つです。まずはこの記事で解説した基本的な操作を繰り返し練習し、体に覚えさせることが重要です。
SVNやバージョン管理システムには、今回紹介しきれなかったさらに高度な機能や概念もあります。例えば、
- ブランチ(Branch)とタグ(Tag): メインの開発ラインから分岐して並行して作業を進めたり(ブランチ)、特定の安定した状態に目印をつけたり(タグ)する機能です。
- ロック(Lock): バイナリファイルなど、競合が起きると解決が難しいファイルを、特定の人が編集する間だけロックして他の人が編集できないようにする機能です。
- 属性(Properties): ファイルやフォルダにSVN固有の属性(例: svn:ignore – SVN管理下に置かないファイル指定)を設定する機能です。
これらの機能は、より複雑なプロジェクトやチーム開発で役に立ちます。もしバージョン管理にもっと慣れてきたら、ぜひこれらの機能についても調べてみてください。
また、バージョン管理システムはSVNだけではありません。Gitという非常に強力で人気のあるバージョン管理システムもあり、こちらはSVNとは少し考え方や操作感が異なります。TortoiseSVNと同様に、GitにもTortoiseGitのようなGUIクライアントがあります。
しかし、まずはSVNとTortoiseSVNの基本的な操作をしっかりと身につけることが、バージョン管理の世界への良い第一歩となります。
この記事が、あなたがバージョン管理の世界に踏み出すための一助となれば幸いです。さあ、今日からあなたもバージョン管理マスターへの道を歩み始めましょう! 🚶♂️✨