バックアップをとろう Git のすゝめ
はじめに
本記事は一切バックアップを取っていない人、バックアップを取っているが毎回手作業でやっていたり、Google Drive や Drop Box といったクラウドストレージサービスを利用している方に向けて git の有用性を伝えるための記事になっています。
git についてご存じで利用されている方はネット上に git に関する記事がいくらでもありますので、あえて記事にする必要がないと思われるかもしれません。ただ既に git をご存じの方はお仕事でプログラマーをされている(いた)、もしくは近しいお仕事をされている方ではないでしょうか。
これまで git というツールを知る機会がなかった方のために git を知ってもらうきっかけになればと思い記事を作成しました。
今回は導入や操作方法には触れません。あくまで git を知ってもらうということを目的としています。
導入については近いうちに別の記事にしたいと思いますが、この記事を見て今すぐにでも導入したいという方はご自身で調べてみてください。
git の利用に向いている方
- 単純なバックアップ以上の機能を求めている方
(バージョン管理がしたい方) - ローカル環境でのみバックアップをする必要がある方
- 複数人数で開発をしている方
単純なバックアップ以上の機能を求めている方
git には様々な機能や特徴があります。以下に例を挙げます。
- 作業の巻き戻しが簡単でわかりやすい
- 不必要な変更履歴を作らない
- バグ修正と並行してバージョンアップなどの対応ができる
作業の巻き戻しが簡単でわかりやすい
git では変更とあわせてコメントを残すことができます(というかその手順がセットになっています)。それによってどの時点まで戻せばいいのかわかりやすくなっています。
また、変更内容に関係するファイルが複数ある場合でも一度の操作で関係する複数のファイルをまとめて巻き戻しが可能です。
参考にトラトリトルの変更履歴
コメントとともに変更のあったファイル、変更箇所、時間などの情報を確認できます
巻き戻した後からさらに最新の状態にすることも簡単にできます。
どのくらい簡単かというと巻き戻すのに必要なクリック数はわずかに3、4回です。(クライアントツールを利用した場合)
これができるとどうなるのという話なのですが、次の経験はないでしょうか。
以前までは問題がなかったのにいつの間にかバグが発生していた
原因となりそうな変更がすぐにわかればいいのですが、全く見当がつかないこともあります。その場合、適当に履歴をさかのぼってどの変更によって問題が発生したのかを確認することで原因の究明につなげることができます。
原因がわかれば最新の状態に戻して修正を加えてももいいし、特定のファイルの変更が原因ならそのファイルだけを巻き戻すといったことも簡単です。
他のサービスや手動でのバックアップでも同様のことができなくはないでしょうが、git はこの操作が比較的簡単にできるという事です。
不必要なバックアップや変更履歴を作らない
1日のうちの特定の時間にバックアップを取る場合、変更がなくても全てのファイルのバックアップを取ることになります(変更があったファイルだけを保存するような仕組みでない限り)。
ファイルを更新するたびに履歴を保存する場合、空行を追加しただけで変更が入ったとみなされ、不要な変更履歴が作られます。中には変更がなくてもタイムスタンプに変更があるというだけで履歴が作られることもあるでしょう。
git の場合変更内容をコメントで残すという手間が増える代わりに、不必要なバックアップが作られることはありません。
これは手作業で細かくバックアップを取っているようなものなので、手間が増えるデメリットとも言えます。 ただ、その手順、巻き戻し操作なども含めて一つのアプリケーションで完結するためエクスプローラー上で一つ一つバックアップを取るよりは非常に楽です。
デメリットを補って余りあるメリットがあるからこそ、世界中の人が利用しているわけです。
バグ修正と並行してバージョンアップなどの対応ができる
次のアップデートの為の作業途中に急ぎ修正が必要なバグ報告が上がってきた。
今の作業を中断してバグ修正作業をしたいが、今の中途半端な状態の変更をバグ修正バージョンに含めることができない。
といった経験があるのではないかと思います。
その場合、以前にリリースしたバージョンを探してきて、そこだけ修正を加えて、アップデートバージョンにも同じ変更をくわえて…といった非常にややこしい手順を踏む必要があります。
もしくはアップデート作業が終わるまで手を付けることができないという事もあるかもしれません。
git では特定のバージョンから分岐したバージョンを複数持つことが可能です。これがブランチと言われる機能です。
参考にトラトリトルのブランチ
v1.3.0 がアップデートバージョン
v1.2.x がバグ修正バージョン
巻き戻し操作などと同じ感覚で修正用のバージョン(ブランチ)とアップデート用のバージョンを切り替えることが可能です。体験版などの専用のバージョンを用意するためにも利用できるでしょう。
当然、分岐した後に一つに統合することができますし、特定の修正だけをアップデートバージョンに取り込むといった操作も可能です。
これによって同じ作業を何度も繰り返すようなことをしなくてすむようになります。
ローカル環境で開発をしている方
勘違いしやすいのですが git はローカル環境でも利用することができます。
git 自体はローカルで動作するアプリケーション(ツール)の名称です。よく名前に挙がる Github はクラウド上で git を利用するサービスの名称であって git とは別のものです。
様々な事情によりクラウドストレージサービスを利用できない方がいらっしゃるかと思います。バックアップとしての用途としては効果が限定的になりますが PC 一つでも利用できますし、ローカルネットワーク上のストレージ(NAS)を活用することも可能です。
複数人で開発をしている方
Github などのクラウドサービスの利用が必要になりますが、複数人で開発をしている方にもオススメです。誰がどういった変更を行ったのかがログを確認することで把握することができますし、同じファイルに同じタイミングで変更を加えた場合は単純な上書き操作ができなくなります。
(正確にはローカルファイル上では変更を加えることができますが、共有されるデータへの反映にひと手間かかります)
これによって意図しないファイルの巻き戻りを防ぐことができますし、誤って上書きしてしまっても変更履歴からの復元が容易です。
クライアントツールについて
git は本来キーボードでの操作しかできないツールです。ただし、それでは多くの人にとっては使いづらいために、マウスによって操作できるようにしたツールが git クライアントとよばれるものです。
ちなみにキーボードによる文字入力で操作可能なインタフェースを、キャラクターユーザーインタフェース、略して CUI といい、マウス操作などが可能なインタフェースをグラフィカルユーザーインタフェース、略して GUI といいます。そのため正確には git は CUI のツールでクライアントツールは GUI のツールになります。
今回記事にした内容はクライアントツールを使用している前提となっています。
もし git を使ってみたいという方は「git クライアント」と検索してみてください。ちなみに私は Source Tree というクライアントを利用しています。
おわりに
今回の記事では git の有用性を伝えるため、自身の開発経験をもとにして使っててよかったなぁと思うことを中心に記事にまとめました。ただ絶対に git を使用した方がいいという事ではありません。
クラウドストレージサービスは簡単につかえるという何にも代えがたいメリットがあります。現状で問題を感じていない方は無理に git を使用する必要はないかもしれません。
とくに git での管理に向かないファイルなどもあり、単純なファイル共有の為であればストレージサービスを利用する方がいいでしょう。
また git を知らない方にわかりやすく伝えることができるように git に関連する用語を極力使用せずに書いたつもりです。明らかにおかしいと思われる点についてはご指摘いただければと思います。