Gitの使い方
ツールのアップデートが頻繁に行われているWEB業界では、Gitを活用して業務を効率化させることが一般的になってきています。
しかし、初心者の方や業界に馴染みのない方は、Gitが何のことかわからない方もきっといらっしゃるでしょう。
多くの開発者に利用されている印象のあるGitですが、実はエンジニアだけではなく、WEBデザイナーやライターにとっても便利なツールのひとつです。
Gitを活用することで、チームでの作業効率を高めたり、多くのファイルを管理することが簡単になります。
というわけで本記事では、Gitについて基本的な用語について解説いたします。
1. そもそもGitとは何なのか
Gitとは分散型バージョン管理システムです。
ざっくりいうと、ファイルのバージョン管理が簡単にできるツールのことです。
バージョンとはそのファイルをアップデートしたり更新した時に変化するものです。
iPhoneでも最新バージョンにアップデートするように通知が来ます。
ただ、アップデートしてしまうと基本的には、古いバージョンに戻すことはできないし、するとしても手間がかかります。
しかし、Gitで管理しているファイルであれば、コンピュータ上でファイルの編集履歴を管理できるので、編集前のファイルを残したまま、新しく編集したファイルを保存することができます。
こうすることで、古いバージョンから新しいバージョンまでの管理が簡単になります。
プログラマーにとっては、多くのコードを編集した上で何か不具合が起きた時に、元のバージョンに戻すことは日常茶飯事です。
かといって、ひとつひとつコードの編集の度に古いバージョンの日付や時刻をつけて保存して、また新しい作業をすることをしていては、時間はかかりますし、人的ミスが増えます。
そういった作業を無駄なく、効率的に行うためのツールがGitです。
2. Gitでできること
Gitが分散型バージョン管理システムとよばれる理由は、以下のような特徴があるからです。
・古いバージョンに簡単に戻せる
・新旧のファイルを一元管理できる
・編集した履歴を複数人で共有できる
・複数人で修正した部分をひとつに統合できる
以上の特徴からも、多くの開発者に利用されているツールだということはお分かりいただけるかと思います。
複数人で開発を行ったり、デバッグ作業を行う時にミスを減らし効率化できる仕組みのことです。
3. Gitの仕様について
まず前提として、GitはCUIツールです。
CUI(キャラクターベースインターフェース)ツールとは、キーボードで入力するコマンドによって操作するツールです。
マウスの動きやクリックなどで直感的に操作できるGUI(グラフィカルユーザーインターフェース)ツールの対義語です。
例えば、プログラマーは、文字だけの黒い背景の画面で仕事をしているイメージをお持ちかと思います。
まさにあのような画面のことをCUI仕様の画面と思っていただければ大丈夫です。
数多くのファイルやデータを複数人で共有するためのシステムであるGitは、どの部分をいつ誰がどのように編集したのかを的確に共有する必要があります。
ですので、もし仮にGitがGUIツールであれば、「一番右端のボタンを操作したときの動きを○○のように編集しました」というような、人によって受け取り方が異なったり、主観が入る表現では同じ画面で確認するまでどの箇所をどう変更したのかを瞬時に把握することはできません。
ところが、CUIツールであれば、何も考えずに共有されたコマンドを入力するだけで、個人の主観に関わらずまったく同じ事象が再現されるので、複数人で同じ事象を共有するという面でもっとも適しています。
こういった理由からGitはCUI仕様になっています。
4. Gitの基本用語
1.リポジトリ
リポジトリとは、ファイルやディレクトリを入れて保存しておく貯蔵庫のことです。
Gitにおけるリポジトリは以下の2種類に分かれています。
・リモートリポジトリ:特定のサーバー上に設置して複数人で共有するためのリポジトリです。
・ローカルリポジトリ:ユーザごとに配置されている手元のマシンで編集できるリポジトリです。
2種類のリポジトリに分けることで、普段の作業はそれぞれのユーザが手元のローカルリポジトリで行い、作業内容を共有するときにリモートリポジトリで公開するという使い方になります。
リモートリポジトリを介して他のユーザーの作業内容を把握することも可能です。
2.コミット
コミットは、ファイルやディレクトリの編集作業をローカルリポジトリに記録するために必要な操作のことです。
コミットを実行するとファイルを編集した日時を記録したファイルが生成されます。
コミットを実行するごとにファイルが生成され、時系列順にならんで格納されるので、ファイルを編集した履歴やその内容を確認することができます。
3.ワークツリーとインデックス
ユーザーが編集している作業中のディレクトリのことをワークツリーといいます。
また、作業場所であるワークツリーと、保存場所であるローカルリポジトリの間には、インデックスという中間領域が設けられています。
Gitの仕様上、ワークツリーで編集したファイルをコミットしたい場合は、一度インデックスに登録しなければなりません。
編集したファイルをリポジトリへコミットする前にインデックスへ登録して仮置き(add)しておくようなイメージです。
ワークツリーからリポジトリに直接保存するとミスが増えますし、効率がよくありません。
コミット予定のファイルをインデックスに仮置きしておけば、後からまとめて確認した上でコミットできるので、編集したファイルのコミットし忘れなどを防ぐことができますし、余分なファイルを含めずにコミットできます。
4.クローン
一言でいうとダウンロードのことです。
複数人で共有しているファイル(リモートリポジトリ)をまるごと自分のローカル環境(ローカルリポジトリ)に保存する機能ですので、ほとんどの場合Gitで最初に行う作業になります。
5.プッシュ
プッシュとは、ローカルリポジトリにあるファイルをリモートリポジトリに送信して保存する機能です。
いわゆるアップロードに近い感覚ですね。
誰かが共有しているファイルをクローンして、ワークツリーで作業したファイルをインデックスに一度仮置きして、まとめてローカルリポジトリに登録(コミット)する。
ローカルリポジトリにコミットしたファイルを共有するためにリモートリポジトリにプッシュするのが基本的な流れになります。
6.ブランチ
ファイルの編集履歴を分岐させて記録していく機能のことです。
WEBサービスやソフトウェアの開発において、バグの修正や、機能の追加などのファイル編集作業は複数のユーザーが同時に行うことも少なくありません。
並行して同時に行われる作業を正確に管理するためにGitにはブランチという機能が用意されています。
これがGitのバージョン管理を効率化し、間違いを減らすためにもっとも活かされている機能といえるでしょう。
5. まとめ
本記事では、Gitの説明をしました。
WEB系の開発ではGitを使う場面が多くなってくるかもしれないので、知識として入れるメリットは大きいと思います。