Git Extensions の基礎勉強 〜Git Extensions によるバージョン管理を使う〜

レッスン 3. リポジトリ用のディレクトリを作成

これで Git Extensions が利用できるようになりました。まだ開発に入ることは出来ません。Git Extensions でソースコードのバージョン管理を行うためにはリポジトリを用意する必要があります。

ノート

リポジトリとは?

Git で管理されるソースコードやファイルを格納する場所のことです。この格納場所を作成しなければ開発に進むことはできません。通常リポジトリの作成作業はプロジェクトの最初に1回だけ実行します。

注意する点

  1. Git の基礎勉強で作成したリポジトリを利用してもよいでしょう。
  2. すでに Git のリポジトリがある場合、このレッスンは飛ばして下さい。
  3. Git Extensionsはリポジトリを作成する機能があります。このチュートリアルではリポジトリの新規作成を行います。

それでは、中央リポジトリを作成します。今回は以下の構成にします。

中央リポジトリ用: c:\work\git-repo

Git Extensions 画面にある「リポジトリの作成」をクリックして下さい。
リポジトリ佐野作成用ダイアログが表示されました。

ディレクトリ: c:¥work¥git-repo
リポジトリの種類:作業ディレクトリを持たない中央リポジトリ(--bare --shared)

「作成」をクリックします。

gite14.png
gite15.png

ここでリポジトリの種類に「個人リポジトリ」と「作業ディレクトリを持たない中央リポジトリ」という選択肢が出てきました。Git を初めて使う人にとっては意味の分からない選択肢が出てきました。今回のチュートリアルでは git-repo を中央リポジトリとして利用する予定ですので「作業ディレクトリを持たない中央リポジトリ」にチェックを付けて下さい。

警告

今回のチュートリアルでは「git-repo」を中央リポジトリとして利用する予定ですので「作業ディレクトリを持たない中央リポジトリ」を選択する必要があります。解説はあとで。

「作業ディレクトリを持たない中央リポジトリ(–bare –shared」とは何か

リポジトリの種類に中央リポジトリを選択すると、ベアリポジトリを作成することを意味します。
ベアリポジトリは管理用のリポジトリであり、作業用ファイルが含まれません。このリポジトリは他から clone されたり、push される対象になります。

ノート

ベアリポジトリを作成するのはどのようなときか?

開発チーム共通の中央リポジトリとしてベアリポジトリを作成し、開発側は自分の端末に clone して開発を進めローカルで commit 後に中央リポジトリに push する流れが一般的です。
Subversion を利用している方には中央リポジトリ(=共有リポジトリ)は唯一のリポジトリで有り、開発者はチェックアウトし自分の環境に作業コピーを作成します。開発チームは常に中央リポジトリに対してコミットを実施します。

分散バージョン管理である Git では、リポジトリから「clone」したら、それも同じリポジトリとなり clone したリポジトリ(ローカルリポジトリ)でバージョン管理ができます。自身の開発を適宜中央リポジトリに反映(push)することで開発チームの開発が進みます。

このことから、ベアリポジトリを作成するタイミングはサーバ側のリモートリポジトリとして利用する場合となります。

これは、git コマンドで

$ git --bare init --shared

と同じ操作になります。

今回のチュートリアルでは共有リポジトリ( C:\work\git-repo )の clone を作成して、ローカルリポジトリを使って開発作業を進めるため、チェックを付けてください。

gite16.png

レッスン 4. クローン

レッスン.3 で作成した中央リポジトリを利用して開発を進めるとき、中央リポジトリのクローンを自身の環境にコピーして開発を進めます。

ノート

開発メンバーで一緒に開発を進めることが想定されるとき、共有リポジトリを利用する場合が多いでしょう。共有リポジトリを利用して開発を進める場合、クローン(clone)して作業ディレクトリをローカルに作成します。
Subversion などは「チェックアウト(checkout)」を実行していましたが、分散バージョン管理「Git」はクローン(clone)します。このクローンはサーバが保持しているデータをほぼすべてローカルにコピーします。これはプロジェクトのすべてのファイルのすべての履歴が手元にコピーされることを意味しています。他の開発者に影響を与えずにブランチを作成したりできる分散管理バージョンのメリットです。

Git Extensions 画面から「リポジトリのClone」をクリックします。

Cloneするリポジトリ(R): C:\work\git-repo
Cloneを作成する場所(D): C:\work\tutorial-src
サブディレクトリ:git-repo
ブランチ(B):空白
リポジトリの種類:個人リポジトリ(P)

gite17.png

「Clone」を押下します。実行すると進捗を表示するダイアログが表示されます。中央リポジトリ(C:¥work¥git-repo)から Clone し、個人用の開発リポジトリ(C:¥work¥tutorial-src)に複製されます。

gite18.png

Clone(クローン)によって作成された、作業用リポジトリをエクスプローラーで見てみます。まだリポジトリに何も登録していないためファイルはありませんが、Git の管理用ファイル(隠し属性のファイル)が作成されていることが分かります。

gite19.png

これで中央リポジトリ(C:\work\git-repo)から作業用リポジトリ(C:\work\tutorial-src)をクローンしました。これから作業用リポジトリで開発作業を進めていきます。

レッスン 5. クローンしたリポジトリで作業開始

クローンが完了しました。これからこのローカルにクローンされた個人リポジトリで開発を進めていくことになります。クローン元になった中央リポジトリと分けて説明するため、クローンしたローカルの個人リポジトリをただの「リポジトリ」や「ローカルリポジトリ」と表記します。 c:\work\tutorial-src を見てみましょう。

gite20.png

レッスン 6. 新しいファイルを作成・追加

ローカルリポジトリで開発を始めましょう。リポジトリには何も登録されていない状態ですので、ファイルを追加してみます。 使い慣れたエディタを使って、以下のファイルを作成します。 [git-tutorial01.html]を作成します。


<html>
<body>

 <h1>Git Extensions チュートリアル</h1>
 <ol>
  <li>クローンして</li>
  <li>ローカルリポジトリを作成</li>
  <li>開発作業</li>
  <li>コミット</li>
  <li>プッシュ</li>
 </ol>

 </body>
</html>

gite21.png

リポジトリにファイルを追加する操作を行います。[git-tutorial01.html]を右クリックして Git Extensions メニューから「add files…」をクリックします。

gite23.png

「add files…」を選択すると確認ダイアログが表示されます。今回は1ファイルの追加のみですので右側のボタン「ファイルを追加」(add files)を押下します。

gite24.png

日本語版のメニューはボタンの文字がすべて表示されなかったため、英語版の Git Extensions ボタンを以下に表示しています。

gite25.png

「ファイル追加」押下でローカルリポジトリに「git-tutorial01.html」が追加されました。進捗ダイアログに「Done」が表示されたらファイルの追加が成功しています。

Git Extensions を起動します。
起動後、「リポジトリを開く」をクリックし、ローカルの作業用リポジトリ「c:¥work¥tutorial-src¥git-repo」を開きます。

gite26.png

ローカルの作業用ディレクトリを開くと、「コミット(1)」となっていることが分かります。
先ほど新しく追加したファイル git-tutorial01.html がコミット待ちになっていることを表しています。

gite27.png

「コミット(1)」をクリックして下さい。コミットダイアログが表示されます。
コミット用のダイアログでリポジトリに対する行われる予定の操作を閲覧することが出来ます。
左下のビューに表示されるファイル一覧が更新対象ファイルです。ファイルアイコンの状態が「+」(追加)に変わっています。これで新しいファイルをローカルリポジトリに追加し、コミットする準備が出来ました。 これだけでは、ローカルリポジトリに反映していません。コミットをしなければリポジトリに反映されません。

コミット用ダイアログの操作は3つあります。

  • 1. コミット

    コミットはリポジトリに対する追加、削除、更新を確定する操作です。
    コミット処理をしてはじめて作業用のリポジトリに操作–今回はファイルの追加–が更新されます。

  • 2. コミット & Push(O)

    コミットを実行し、続けてPush(プッシュ)を実行します。Push(プッシュ)は個人用リポジトリの作業を Clone(クローン)の元である中央リポジトリに反映する操作です。後のレッスンで実行します。

  • 3. すべての変更を取り消し

    追加、削除、変更などのリポジトリに予定していた操作をすべて取り消すときに利用します。

それでは、コミットを実行します。
コミットウィンドウの右下にあるメッセージ欄に今回のコミットの内容を簡潔に書いて下さい。
コミットメッセージはとても重要な情報です。チーム開発では必ずコミット時の内容を記述するようにして下さい。(コミットメッセージは未入力でもコミットすることが可能です。)

gite29.png

コミット完了画面が表示されました。これで新しいファイルを追加し、ローカルリポジトリにコミットすることが出来ました。

gite30.png
gite31.png

ノート

コミット時のコメントは何を残すべきか?

コミット時に変更内容を記録するメッセージ領域が表示されます。
コミットするときは必ずコミット内容を説明する内容を記述するようにすべきです。具体的に、機能追加なのか、バグ対応なのか、仕様変更による変更なのかを記載するべきです。
人間の記憶はとても曖昧で1,2ヶ月前の作業について何をやっていたかは覚えていても、日々のコードレベルの修正など覚えていないーー覚えておく必要も無いのでーー場合がほとんどです。
コミット時に修正内容を記録しておくことは、チームみんなのためであり、将来の自分のためでもアルのです。

レッスン 7. 新しいディレクトリを作成・追加

ディレクトリの追加やディレクトリに含まれるファイル群の追加をやっていきます。 やり方はファイルの追加と同じです。

フォルダa,bとbフォルダに1つのテキストファイル“kudamono.txt“ を作成します。

gite32.png

フォルダaとフォルダbをリポジトリに追加するため、フォルダ c:¥work¥tutorial-src¥git-repo の空白領域を右クリックして「add files…」を実行します。フォルダbにはテキストファイルが含まれていることに注意してください。
c:¥work¥tutorial-src¥git-repo の「ファイルを追加」を実行すると進捗ダイアログが表示されリポジトリ管理外のファイル(a,b,bフォルダのkudamono.txt)を追加しました。

gite33.png

追加が正常に終わったので「コミット(1)」と表示され、コミット待ちの変更があることが分かります。
「コミット」をします。コミットを押下して下さい。

gite34.png

コミット予定のファイル一覧に「a」フォルダがありません。「kudamono.txt」を含む「b」フォルダはリストされているようです。これはなぜでしょうか。レッスン 7. の注意事項をご覧下さい。

コミットメッセージを入力してコミットを実行します。

gite35.png

警告

新しいディレクトリを追加..

新しいディレクトリを追加しましたが、「フォルダa」を追加することが出来ません。
Git では空ディレクトリを「追加」することができません。フォルダb のように適当なファイルがあれば追加することが出来ますが空ディレクトリは追加できません。このあたりの操作は Subversion(SVN)とは異なるので注意が必要です。

正しくは Git で空ディレクトリを追加する方法はあります。調べてみて下さい。