ふたたびgit

このところgitを利用する機会が多くなってきたのですが、ほぼgitについて初心者の状態から多少使える程度になるまでにいろいろと経験したところをまとめます。

gitはコマンドラインで利用するのが一番よい

gitには各プラットフォーム様々なツールがありますが、基本的にはコマンドラインで操作するツールです。この辺はSubversionなども同様でした。ただ、Subversionと違うところは、分散管理型のリポジトリであるという点でしょう。Subversionは集中管理型なので1カ所にリポジトリがあり、コミットという操作はその集中管理されているリポジトリへ変更内容を登録するという作業になります。

一方gitはというと、どこかで管理されているリポジトリから自分のローカル環境などへリポジトリをコピーし、コピーしたリポジトリに変更を登録、そしてローカル環境のリポジトリのコピー元のリポジトリへその内容を反映するという流れになるわけです。この流れをIDEやツールでやってしまうと、いくつかのステップに分かれている作業がツールの提供する単位に隠蔽されてしまいわからなくなってしまいます。

コマンドラインの場合、基本的に一つ一つ操作を確認して行わなければならないため、ソース管理システムという重要な資産に対してどのような事を行っているのか明確にわかるようになります。逆に、この辺が曖昧なままソース管理を行う事自体危険ですよね。

gitはgithubやbitbucketなどを利用する

さくらのVPSやCloudCoreなどの安価なサーバー環境が提供されるようになって、いろいろと自分サーバーを運用することが容易になりました。ただ、サーバーを構築することと維持することは根本的に異なるわけで、自分の資産であるソースコードをなんちゃって運用(何かあったときにバックアップからリストアできるか確認する作業を定期的に行う事ってしていないですよね?)に乗せるのは控えた方がいいのかなと思ったりします。

では、どうすればいいのかということですが、githubやbitbucketを利用しちゃいましょう。公開リポジトリの制限やアクセスできる制限などによっては料金がかかりますが、少なくともソースコードを喪失する確率は自分で運用するより遙かに少なくなるでしょう。

また、githubやBitbucketを利用すればわかるのですが、gitで何をすればよいのか、次に利用するべきコマンドなどがリポジトリの管理サイトに表示されます。なので、その内容を理解すれば自然とgitで行うべき内容がわかるようになります。また、簡単なissueやWikiもあるので、それらを利用すればある程度のプロジェクト管理は可能でしょう。

コマンドで理屈を理解したらツールを試してみる

コマンドラインで理屈、gitの基本的な動作を理解できたらIDEなどに付属しているツールを利用してみるとよいと思います。どのような操作が行われているのか、自分がコマンドで何をしようとしているのかを比較してみると意外と知らないコマンドを利用していることがあります。ツールで提供されている操作が複数のコマンドの組み合わせで提供されていることもあれば、知らない単一のコマンドで提供されていることもありますので、各ツールのログなどを確認してみるのはおすすめです。

理解を深めるために利用したもの

理解を深めるために一番役に立ったのはドットインストールでした。1回が3分程度の開設になっている動画講座なのですが、gitについてとてもわかりやすかったです。こちらで基本的な操作について理解できました。ドットインストールをで概要を把握した後はgithubやbitbucketで実際にコマンドを確認しながら試してみました。

ドットインストール

また、今回はgitについて詳しい人が周りにいたことで助けていただきました。もっとも、まだまだ序の口なのでこれからツールとしてgitを使い慣れていくことが重要なわけですが、とっかかりについてアドバイスいただけたことはとてもありがたかったです。ありがとうございました。

手元に置いておきたい書籍もあります。gitについては何冊か書籍を購入したのですが、ドットインストールなどで概要を理解した後はGitポケットリファレンスが一番使いやすいと感じています。コマンドについて操作例が亜が得られていることもあり、わからないときには重宝します。

(VPSで運用などを行う場合、GitポケットリファレンスのCHAPTER3以降に掲載されているAluminiumが参考になると思います。)

最後に

gitですが、おそらく企業での導入はしばらくは難しいでしょう。コマンドラインの運用やWindowsでの利用についてなかなかうまくいかないケースがあったりするためです。ただ、gitとSubversionは本質が異なるため使い分けも必要でしょう。CVSからSubversionへ移行した時とは少し異なるように思います。バージョン管理システムのラインナップが増えたという考えが今のところ一番しっくりきます。ということで必要かどうかも含めてgitの導入を検討してみてはいかがでしょうか。