【いまさら聞けない】初めてバージョン管理システム(Subversion、Git など)を使う時はここに注意
先々週の雪かきで腕の筋を傷めた kimoto です。もう1週間以上経つのに未だに痛い…。ぜんぶ雪のせいだ。
今や現場に欠かせないツールであるバージョン管理システム。
これのおかげで、多人数で同時に開発しても問題ないし、無駄にバックアップを取る必要もないし、ある時点へ戻すことも簡単だしで、もうとにかく良いことづくめです。
しかし、慣れないうちはいろいろと戸惑うこともあるかと思います。
とても便利なツールなのに、良く分からないがゆえに「こんなもん使わなきゃ良かった…」となることもあるかもしれません。
そういう事態にならないよう、少しでも助けになればと思って初心者向けの記事を書いてみます。
この記事は、会社などで「うちでは Subversion 使ってっから。とりあえず作業したらちゃんとコミットしといて」みたいな感じで言われたけどよくわからない!みたいな感じの人向けです。
基本的に、GUI ツールである TortoiseSVN もしくは TortoiseGit を利用している前提で書き進めます。
また、主に Subversion について書いています。
作業開始前にはまず「更新(同期)」
更新作業が終わり、コミットしようとしたもののコミットできない!
更新しろって書いてあるから更新したらなんか衝突って出た!うわーもう知らん!
…なんて事になるべくならないために、作業を始める前にまず更新をかけましょう。
TortoiseSVN(Subversion)では「SVN 更新」、TortoiseGit(Git) では「Git 同期」という名称になっています。どちらも、リポジトリにあるファイルと今から作業するファイルの同期を行うためのコマンドです。
衝突しても正しく対処すれば問題はないですが、最初の頃はパニックになりがちです。なるべく衝突を避けるために、作業前にはまず更新(同期)、これを心がけましょう。
衝突した場合に無理やりコミットしない
作業したあとに念の為「更新」したら、衝突が起こった場合など。
先ほども書きましたが、最初のうちには衝突が起きると、なんか赤い文字出た!ビックリマーク付いてる!とパニックになったりすることもあるでしょう。
しかしここで、「よくわかんないけどとりあえず「解消済み」にしてコミット!」、というのだけはやってはいけません。
これを行うと一見無事コミットできたように見えますが、ファイルには衝突点を示す文字列が入っていたり、ディレクトリの場合は不整合が起こったりしてしまいます。
こうなると、下手をすると重大なエラーを引き起こすこともあるので注意が必要です。
衝突が起きてしまったら
衝突が起きた場合は、まずどこが衝突しているのかを確認します。
衝突は、大抵は「誰かが作業した部分」と「自分の作業した部分」のどちらが採用されるべきか判断を迫られている状況です。
確認してファイルを修正し、問題がない状態になったら「解消済み」にしましょう。
良くわからない場合は、先輩社員に相談するのも手です。
何にせよ、無理やりコミットするのはやめましょう。ダメ、絶対。
ファイルの削除はツールから行う
慣れてないうちは、ファイルの削除をそのまま「右クリックから削除」もしくはゴミ箱に入れてしまうこともあると思います。
しかしバージョン管理されている場合、それでは削除になりません。
むしろ、「誤って消してしまった場合に元に戻せる」というのもバージョン管理システムを利用する大きなメリットです。
作業ファイルを削除する場合は、TortoiseSVN や TortoiseGit 上で「削除」を行います。
そしてその後コミット(プッシュ)することで、リポジトリから削除されます。
イメージとしては、「リポジトリの管理下から外す」という感じですね。
リポジトリから外したいがファイルは消したくない、という場合は、どこかにコピーした上で「削除 > コミット(プッシュ)」しましょう。
ファイルの追加も同様にツールから
削除と同じく、ファイルの追加も同じくツールから行います。単純にディレクトリにファイルを起き、そのディレクトリ全体をコミットしても、リポジトリには反映されません。
「追加」を行って明示的にファイルの置き場を確定し、その後コミットすることで初めてリポジトリに反映され、他の人もそのファイルを使えるようになります。
ここを忘れてしまうと「画像がない!」「CSSが当たってない!」みたいな事になるので要注意。
コミット時には忘れずにコメントを書く
コミットする時にはコメント付けることができます。
面倒臭がってここを省いてはいけません。他人はもちろん、自分ですら変更点など忘れてしまうのが人間。
どういう変更点があるのか、きちんとコメントを残しましょう。
まとめ
ということで、基本的なことですが、慣れてない時に躓きがちな部分のお話でした。
中でも「衝突」は大きな壁となる可能性があります。
「衝突」とその解消法について書くとそれだけでかなり長くなってしまいそうなので、次回に続こうかな?
- TortoiseSVN
- TortoiseGit
- WinMerge(衝突時に変更点比較に便利です)