前回(ネットでバージョン管理 No.2)の続き。
前回までで、オンラインサービスである、Unfuddleを利用して、ローカルに有るファイルをオンラインリポジトリにコミットするところまでが出来るようになったはずである。
これで、システム開発、もしくはホームページの更新、また、何か書きあげている文章等が出来上がっていく工程がしっかり保存されていく事になる。
ココからは、仕事でも使える方法等も交えてGitの便利な使い方を書く事にする。
■別のPCからも接続する
ここで、一度別のPCからも、同じリポジトリに接続してみよう。
必要無ければこのセクションは読み飛ばしてOK。
私の場合は、会社と自宅の両方から同じリポジトリに接続できるようにしている。
まず、接続したい別のPCにも「No.1」Gitクライアントのセクションを参考に TortoiseGit をインストールしておく。
キーファイルに関してはセキュリティの考え方によってやり方が異なります。以下1.2.の方法が有る。
1. 「No.1」キーの作成と登録5. で保存していた秘密鍵ファイルをUSBメモリ等で別のPCに持っていく。
2. 「No.1」キーの作成と登録を参考に別のPC用に新たなキーを作成しておく。(この場合、Unfuddle側にもその公開錠を追加登録しておかなければなりません)
キーファイルが用意できたところで、リポジトリを読み込んでみよう。

試しにデスクトップ上で右クリックして「Git Clone...」をクリック。
クローンとは名前で想像する通りリポジトリのコピーを作る事であり、クリックすると以下のようなダイアログが出てくる。

クリックで拡大
URL:の欄にリポジトリのアドレス(No.2 でも使用したgit@・・.git のようなアドレス)を指定。
ディレクトリ:の欄にこれから編集用コピーを保存するフォルダの場所を指定。
Load Putty Key の欄に秘密鍵ファイルの場所を指定。
「OK」をクリックするとその場所にフォルダが作成される。
中身がリポジトリと同期されるので、フォルダの名前は別に何でもよい。
■アイコンについたマークについて
所で前回から見てきたと思うが、フォルダやファイルに追加されたこのようなチェックマークの意味について代表的なものだけ簡単に説明する。
リポジトリのコピー内では、以下の表のように各ファイルやフォルダのアイコンの左下にマークが追加されている。
これはTortoiseGitやTortoiseSVNの機能なので、詳しい事は各ソフトのドキュメントを見てもらうとして、上の4つの説明だけ。(私が使った感想のようなものなので間違えてるところが有るかもしれません。)
緑のチェック:
リポジトリが最新である。ただし、ここで言うリポジトリはローカルのリポジトリであって、インターネット上のリポジトリが最新かどうかはこのマークだけでは判断できない。
赤の感嘆符:
更新されているのでコミットする必要が有る。右クリックのメニューから「コミット」を行えば緑のチェックに変わる。
黄色の感嘆符:
競合が発生している。これは二人、または二カ所以上からのアクセスが有り、同じファイルに各それぞれが違う更新を行って、それぞれがコミットした場合に、どちらの更新を優先するか、または両者の更新をどのように融合させるかを、解決しなければならないという警告が出ている事を指しています。マージして競合の解決を行う事で、解除される。
グレーのチェック:
読み取り専用の状態。このマークのついたフォルダの中身は直接編集しない方が良い。
Gitのリポジトリは各リポジトリがサーバーに有るリポジトリと同じような使い方をする事が出来る。ちょっと分かりにくいかもしれないが、例えば、USBメモリにリポジトリを配置して、それをデスクトップにクローンコピーし、編集してコミット後、USBのリポジトリにプッシュ!
別のマシンでもおなじUSBを差し込んでプッシュ!
と、このような使い方も可能。
その時、このUSB側のリポジトリはグレーのマークになっているはずだ。
要は、プッシュされた側のリポジトリは読み取り専用としてマークされ「直接編集しないでくれ」と警告を出すのだ。
■その他の機能
「Git Pull...」 サーバー側のリポジトリの更新情報をローカルのリポジトリに持ってくる。
「Git 更新をチェック(F)」 更新されたファイルや追加されたファイルの一覧を表示。
「Git ログを表示(L)」 コミットされた履歴とコメント等を表示。
右クリックで出てくるメニュー(設定から変更可能)には、他にも「別のバージョンのファイルとの比較」、リリースした時に使う「ブランチ」等、ここで全ては紹介しきれない位の物がたくさん使えるようになっています。
上の「USBにリポジトリを配置する」でもそうですが、リポジトリの場所の指定は”git@******.git”でなくとも”C:\Users\hoge\Desktop\コード”というようなパスの指定でもOKです。
色々やってみると分かるのですが、Gitはリポジトリと言う概念が、Subversionよりも掴みやすいかもしれません。
一般ではGitは分散リポジトリ等と呼ばれていて、難しそうなイメージが有るのだが、逆に構造が単純で理解はしやすいのではないだろうかと思い、あえてをGit紹介してみた。
■SubversionとGit
殆どGitについての説明をしてきたが、現在の巷での主流はSubversionだと思うので、一応違いを簡単にまとめておく。
Subversion:
動作
コミット = サーバーへ更新情報を保存
更新 = サーバーから更新情報を読み込み
チェックアウト = サーバーからリポジトリ(フォルダ単位)を更新用にコピー
ブランチ = 別フォルダにコピー
構成
リポジトリはサーバーにのみある。
ローカルコピーには、サブフォルダを含め全てのフォルダに”_svn”と言う管理用のフォルダが出来る。
Git:
動作
コミット = ローカルで更新情報の作成
プッシュ = サーバーへ更新情報を保存
プル = サーバーから更新情報を読み込み
クローン = サーバーからリポジトリ(ブランチ単位)を更新用にコピー
ブランチ = ブランチと言う単位が有りそこにコピー
構成
全てのクローンがリポジトリを持つ。
ローカルコピーのルートフォルダ内のみに”.git”と言うリポジトリの実体フォルダが出来る。
ここまでで、だいたいの概要と使い方が分かったのではないだろうか。
あとは「実際に使ってみる」のが一番理解しやすいと思う。
私のやり方ではありますが、「概要を調べる」そして「使ってみる」それから「細かく調べる」が良いかもしれませんね。
■プロジェクト管理機能を使ってみる
リビジョン管理だけでは一本の履歴がただ保存されているだけだが、ココで「No.1」で書いたプロジェクト管理が便利になっていく。
プロジェクトのページ行くと、「Message」、「Ticket」、「Mileston」と言うのが有るのが分かる。
それぞれの説明
Message:メッセージ
これは特に説明するほどでもないメッセージ。多人数で使用する場合には、連絡事項として、一人で使う場合でもメモとして利用できる。
Ticket:チケット
これはタスクや課題、などと解釈すると良い。実際に作業や実務等のやらなければならない事項を列挙するための物。
例えば、不具合の連絡を受け、それを修正するために課題としてTicketを作成する。等。
各チケットはどれかのマイルストーン達成のために行われる物が殆どとなるため、マイルストーンとの関連付けが出来る。
チケットは作成されたら、誰が担当するのか決めアサインする。
その後実際のタスク完了後に、テスト、確認等を行い、クローズして終わる。
この、経過は各タスクにコメントとして随時追記していくことができる。
Milestone:マイルストーン
これは、プロジェクトの最終目的までに多数の段階を作って、今プロジェクトがどこまで進んでいるのかという目安になるための進捗段階地点を指すもの。
使い方は決まっていないが、今回のソフトウェアの開発プロジェクトで有れば最終目的地が決まっていない物も有る。その場合はMilestoneをリリースするバージョンに置き換えて使えば良い。
マイルストーンには各タスクが関連付けられ、その全てのタスクがクローズされたらMilestoneが達成されたと解釈する。
■使用例
私の場合、どこかで見て真似ているやり方なのだが、マイルストーンに「検討中(期限なし)」「実行予定(期限なし)」の二つを作り。
次に「Version 2.5」などの各バージョンのマイルストーンを作成する。
不具合の報告や要望などをTicketに書き込み、Ticketのコメント欄でやり取りしながら、検討中や実行予定、または次のバージョンまでにやる物はそのバージョンのマイルストーンに関連付ける。
という使い方がメインだ。
このようにプロジェクト管理ソフトでは、大抵の物がタスクとマイルストーンと言う構成で作られている事が多いので、フリーで使用できるUnfuddle等で使い倒しておけば、何かと今後役に立つかもしれない。
■その他のサービス
この手のサービスは山ほど有りそうなのだが、私が使ってみて勝手にランクインした4つを挙げておく。
私がTortoisSVNとTortoiseGitがお気に入りなので、これらが使えて、今回紹介したような使い方が出来る物に絞っている。
今回紹介した物。リビジョン管理(SVN・Gitの複数のリポジトリ)とプロジェクト管理(1プロジェクト)がフリーで利用可能。絶対フリーじゃないと駄目と言う方には超お勧め。
私がメインで利用しているサービス。フリーではオープンソース限定になる。有料版だと、かなり高機能なので、少し(1プロジェクト1ユーザーで、3.3ドル)位なら払っていいという方には超超お勧めサービスです。
しかも、ここは有料版にすると、アカウント無しのユーザーに対してのアクセス権等を設定出来るので、私の場合は、シェアウェアの不具合報告をここのMessageで受け取り、プロジェクト管理に反映させ、開発したら、リビジョン番号をここのリポジトリと合わせて発行するという使い方をしてる。
公開可能なWikiやバーンダウンチャート等も付いて、見やすく出来ている。
Subversionリポジトリのみのサービス。プロジェクト管理とかは不要だという方にお勧め。
フリーでも3ユーザー100MBまでは利用できる。
ここは日本のサービスだが、かなり良くできている。フリーだといまいちかもしれないが、有料版は使いやすそうな気配。











