バージョン管理を使おう(Git)~  365日の紙PHP(12日目)

近代的なPHP開発を行うために

おススメ!記事
Raspberry Pi 用「HAL」で、
カップラーメン・タイマーを作ってみよう!
ラズパイDIYの決定版! ソケットサーバー「HAL」をご紹介します。

Gitを使ったバージョン管理をしてみよう

さて、今日はソースコードのバージョン管理について勉強します。

バージョン管理というのは、ソースコードの作成・編集の過程を記録しておき、いつでも過去の任意の時点に戻ることができるようにする事です。

良いバージョン管理ソフトがなかった時代は、ソースコードのフォルダに project_20160223 のようにタイムスタンプを手動でつけてバックアップを取っていたりしましたが、現在はとても便利なアプリケーションがあるので、そういった煩わしい作業は不要です。

これから使うのは、現在最も便利なバージョン管理ソフトだと思われる Git です。

Git はそれまでのバージョン管理にはなかった分散バージョン管理システムになっていて、自分自身のパソコンと、ネットワークで繋がる別のコンピュータの2か所にリポジトリと呼ばれるソースコード保管領域を持っています。

複数人のチームで開発を行うときでも安全に開発が行えるよう、自分のパソコン(ローカルリポジトリ)で好きなだけ編集を行い、ある程度形になったところでネットワークの先にあるリポジトリ(リモートリポジトリ)に反映させるようになっています。

NetBeans を使えば、この Git を使ったソースコード管理がとても簡単にできます。

ローカルリポジトリ

では、まずはローカルリポジトリを作ってみましょう。NetBeans を立ち上げてください。

NetBeansのプロジェクト

firstLogin プロジェクトを右クリックして開くメニューから「バージョン管理」 > 「Gitリポジトリの初期化」を選んでください。

コンテキストメニューからリポジトリの初期化

ローカルリポジトリを作成する場所を聞かれます。デフォルトはプロジェクトフォルダ内です。リポジトリの場所を別にしたい場合は変えてもらって構いません。

リポジトリを作る場所の指定

OKをクリックすると、ローカルリポジトリ .git が作成されますが、リポジトリは隠しディレクトリになっているため、確認するには OS で隠しファイルを表示する設定にする必要があります。

Windows 8 / 8.1で隠しファイルやシステムファイルを表示する方法

Finderで隠しファイル・フォルダを表示 - Mac

※この .git ディレクトリが、バージョン管理の全てです。ですから、このディレクトリを削除したり他の場所に移したりすれば、バージョン管理が行われなくなります。管理していたプロジェクトをまっさらな状態にしたい時などは、この .git ディレクトリを削除してください。

NetBeans のプロジェクトウィンドウを見てみてください。

リポジトリ初期化直後のファイル

ファイル名が緑色になっているのがわかるでしょうか?

この緑色のファイルは、まだ Git に「コミット」と呼ばれる登録がされていないことを示しています。主に新規ファイルがこのように緑色になります。

では、ファイルの変更を登録してみましょう。firstLogin プロジェクトを右クリックして開くメニューから「Git」>「コミット」で登録できます。

altテキスト

すると、コミットするファイルの選択ウィンドウが開きます。

コミットメッセージには、1行目に修正内容の概略2行目は空行3行目以降に修正内容の詳細を書く決まりになっていますが、その通りでなくともコミットは可能です。

では、今回は全てコミットしてみましょう。

コミットファイル確認画面

初めてのコミットの場合、リポジトリのユーザーが聞かれますので問題なければ「はい」をクリックしましょう。

コミットユーザー確認

コミットが完了すると、ファイル名が黒くなります。これでコミット完了です。

コミット完了

さて、ではバージョン管理の機能をちょっとだけ使ってみましょう。

まず、index.php を開き、

$allow = array(
"taro" => '$2y$10$9xUPdF/l2deV2gCo2BbqAeJ6Znh1eTDfQ4e7Rgy0Jy8lzvmyYIZcu',
"hanako" => '$2y$10$nBaOXLHZgXAGobWD1JZMxOnLUwQ1BAYdxJpyqQSJRfVxRwQ/o6ln2',
"kenji" => '$2y$10$u2GdyeCYUtImZAgkyqlpYeWrIsuLwmXtsxCzCOX7NHhEO/q0AkBE.',
);

このあたりをごっそりと削除してしまいましょう。思い切ってやってしまって構いません。削除したら保存してください。修正を加えたファイル名は青色で表示されます。

同様に login.php についても変更してみましょう。分かりやすいように、何箇所も修正して保存を繰り返してみてください。

    <body>
<h1>ようこそ</h1>
<p>Git のテストです。<?php echo htmlspecialchars($_SESSION["user_id"], ENT_QUOTES, "UTF-8"); ?>さん。</p>
</body>

このような修正を加えた後で「やっぱり元に戻したい」という場合は、戻したいファイルを選択して右クリックで開くメニューから「Git」>「変更内容を元に戻す」で戻したい内容を選び「元に戻す」を選択します。

復元メニュー

復元確認

修正内容が元に戻ったことを確認してください。

復元後

このように Git では簡単に前回のコミット時の状態にソースコードを戻す事ができます。

次は様々な修正を加えた後、コミットしてください。修正を繰り返しながら、コミットを何回かしてみると良いでしょう。その際、コミットコメントをつけて、どんな修正をしたか分かるようにしておきましょう。

ある程度修正を繰り返したら、修正を行ったファイル、またはプロジェクトを右クリックして「Git」>「チェックアウト」>「リビジョンのチェックアウト」を選んでください。

チェックアウトメニュー

チェックアウトするリビジョンの選択画面になりますので、右上の選択ボタンからリストを表示します。

チェックアウトするリビジョン選択1

チェックアウトするリビジョン選択2

リストから戻したいコミットを選択して「選択」ボタンをクリックしてください。リビジョンが選択されたら「チェックアウト」ボタンをクリックしてください。

コミット時にコメントを書いていれば、そのコメントの1行目がここに表示されているのが分かるでしょう。コミットコメントを書く理由はこのようなものです。ですから、できるだけ修正内容の分かるコメントを書く習慣をつけておくと良いでしょう。

チェックアウト後

ソースコードの内容がコミット時のものに戻ったことが確認できたでしょうか?

このように、Git を使えばいつでも好きな時点のコミットの状態にソースコードを一瞬で戻すことができます。コミットの情報はすべて記録されているので、もっと古いコミットの時点のコードに戻すことも可能です。

「ソースコードをいじりまくったら全く動かなくなって元にもどせなくなってしまった」といった、初歩的な悩みから開放され、何度でも望み通りの修正を行えるようになります。

NetBeansの履歴管理

加えてNetBeansでもファイルの保存を全て記録している「ローカル履歴」機能があるため、この機能を使ってもファイルの修正を取り消す事ができます。

修正を取り消したいファイルを右クリックして「履歴」>「履歴を表示」を選んでください。

NetBeansの履歴メニュー

過去の保存履歴とその時点でのソースコードと現在のコードとの差分が表示され、部分単位でいつでも過去のコードに戻す事ができます。なお、ソース画面に戻りたい時は左上の「ソース」ボタンをクリックしてください。

NetBeansの履歴管理機能

まとめ

Git の右クリックのメニューを見ていただいた通り、Git は様々な管理機能があるのでここで詳しく説明することは避けますが、少しずつこのコーナーで触れていこうと思います。

今日はまず、ローカルリポジトリを作成してソースコードをバージョン管理する方法を学びました。これでソースコードを壊してしまう心配から解放され、好きなだけプログラムに改良を加える事ができるようになりました。

明日はリモートリポジトリを作成して、変更内容をリモートリポジトリにプッシュしてみましょう。リモートリポジトリを使うと複数人での開発が容易になるほか、万が一お使いのパソコンが壊れてもプロジェクトをリモートリポジトリからチェックアウトする事で、大切なソースコードを失わずに済みます。

お疲れ様でした。

この記事へのコメント

※現在コメントはMarkdown記法が強制です。>>Markdown の書き方


この記事に返信

このコメントに返信