目次
みなさんはじめまして。アピリッツ、コンテンツデザイン部に所属しております敷田と申します。
今回は新卒やIT企業で初めて働く人が最初にブチ当たる壁『 git 』の事を記事にしてみました。
はじめに
IT企業で働くことになると避けては通れない存在として『 git 』と呼ばれる謎の便利な存在があります。
エンジニアだけでなくデザイナーやプランナーなど、「ソースコードを書かない職種」の人も向き合う必要があり、今はIT企業で働くうえで必須の知識と言っても過言ではありません。
しかし、エンジニアの専門学校でも扱っているところは少なく、入社した時に先輩からは「ググったらgitについて書かれているサイト沢山あるから」と言われてしまい、ネットを探すと色々なgitについて書かれた入門ページはあるけど、いきなり実践向けだったり専門用語だらけだったりで、
自力で何とか学んで、なんとなく身に着けて、数をこなしてようやく習得する。
そんな、本当の意味で入門といえる情報は意外と少ないのが現実です。
そんな『 git 』という単語を初めて聞いた人が、『git入門』を読み始める前に【『git入門』の入門】として聞いてほしい内容をまとめました。
そもそも『 git 』って何?
まずはこちらの画像を見てみてください。
社会人になってくるとチームで1つのモノを作る機会が多くなります。そのため、個人の時は起こりえなかった1つのファイルを複数人で編集することも頻繁に発生してきます。もちろん、すべての修正を1人の人がやればこんなトラブルは起きませんが、これがとても行数の多いテキストファイルだったら、当然ながらみんなで分担してやらないといけませんよね?
そんな時に登場するのが『 git 』です!コイツを使うと上記の作業がこんな風に変わります!
『git』という魔法の管理システムを使う事で、各自がバラバラにやっていた作業が全て綺麗に集約させてることが出来、しかも「更新に対してのコメント、差分(編集前後でどんな差があったか)、誰が編集したか」などの履歴も残ります。
そんなIT企業で開発を行う上で必須と言っても過言ではないのが『git』という【分散型バージョン管理システム】なのです。
代表的な単語を覚えていこう
多くの人が『git入門』で一番最初にぶち当たる壁は『git用語』です。どんなに便利な管理システムと分かっていても、初めて英語を勉強するのと同じで、何を言っているのか全く分からないところからスタートになって、人によっては挫折してしまうかも知れません。
そこで、『git入門』を安心して読み解けるようになれるよう、『 git 』を使う上でよく使われる代表的な単語が何者なのかを紹介していきます。
[ リポジトリ ]ってなぁに?
まず最初に覚えて欲しいのは[ リポジトリ ]です。リポジトリには[ リモートリポジトリ ]と[ ローカルリポジトリ ]の2種類があります。
[ リモートリポジトリ ]はgitでデータを管理している全員がアクセスする先で、ココを参照して最新のファイルを持ってきたり変更した内容をアップロードしたりする、「みんながアクセスする共有パソコンのフォルダ」のようなものです。
[ ローカルリポジトリ ]は[ リモートリポジトリ ]から取得したデータを保存する場所で、保存したファイルを編集して最新のデータに更新したりする、「自分のパソコンのフォルダ」のようなものです。
[ リモートリポジトリ ]はみんなが情報を共有するためのハブ(中継装置)にあたる存在なので、直接ファイルを編集したりすることはできません。ファイルを編集する場合はかならず[ ローカルリポジトリ ]を編集することになります。
[ ブランチ ]ってなぁに?
次に覚えておいてほしいのは[ ブランチ ]です。
「ブランチ」については「バージョン」とか「種類」を意味する単語だと覚えておきましょう。
例えば「最新バージョン / 機能追加バージョン / バグ修正バージョン」など、その時々で使い分けるものという事だけ覚えていれば大丈夫です。
この[ ブランチ ]なのですが『git入門』を読む段階ではあまり深く考えなくて大丈夫です。
ブランチの扱い方は開発環境やプロジェクトごとそれぞれ最適な運用方法があり、統一された運用方法が存在しません。つまり携わるプロジェクトによって使い方も変わるし、プロジェクトによってはその扱い方についてのルールなどが定義されていることも多いからです。
とはいえ、『 git 』の機能をフルに引き出すためには[ ブランチ ]の扱い方を完全に理解する必要があるとても重要な項目であることも事実です。
ある程度『 git 』の事を理解できてから、ブランチの運用方法についての知識を深めるために「git-flow」や「GitHub Flow」なんて単語を検索してみるといいかもしれません。
[ フェッチ ]ってなぁに?
前の2つとは異なりここから先の単語は操作名称になります。
まず最初に知っておくべきなのは[ フェッチ ]です。フェッチとは[ リモートリポジトリ ]の最新の状態を取得する操作です。
ここで注意すべきなのは「最新状態を取得」であって「最新状態を適用」ではないことです。あくまで、[ リモートリポジトリ ]内の最新の履歴情報やファイルを取得(ダウンロード)しているだけで、実際にダウンロードしたファイルを適用はしていないということに注意してください。
この[ フェッチ ]は『 git 』にとって非常に重要な処理で、これ以降に説明する操作いずれを実行する時にも必ず直前に実行が必要となります(一部例外あり)。なぜなら、[ リモートリポジトリ ]からデータを取得する時やデータを書き込む時に、最新の情報を取得している状態で処理を行わないと、データがぐちゃぐちゃになってしまうからです。
とりあえず初めて『 git 』に触れる方は、「何を実行する時にも最初に必ず実行しないといけないおまじない」と覚えておくといいでしょう。
[ コミット, プッシュ ]ってなぁに?
[ コミット ]とは、自分のパソコンにあるファイルデータを更新して保存する事です。
ただし普通のファイル保存だけではなく、ファイル保存をした後に[ ローカルリポジトリ ]に対してファイルを更新した記録を登録するという事をしなければならなく、その処理の事を[ コミット ]と言います。
[ プッシュ ]とは、その[ コミット ]した記録を[ リモートリポジトリ ]に登録する操作のことです。
この操作をすることで全員が参照しているリポジトリに記録が残るので、アクセスしている全員が見れる状態になります。
[ マージ, プル ]ってなぁに?
[ マージ ]とは2つの異なる[ ブランチ ]を1つに統合する事です。
マージについては、[ ローカルリポジトリのブランチA ]と[ ローカルリポジトリのブランチB ]をマージするパターンと[ ローカルリポジトリのブランチA ]と[ リモートリポジトリのブランチA ]をマージするパターンの2種類があります。
前者はローカル環境にある2つのブランチの内容を1つに統合する処理です。
後者は既に所持していたローカルのデータに対して、リモートにある最新の情報適用して更新する処理です。
この後者のリモートリポジトリのデータを取得する一連の流れの[ フェッチ => マージ ]の処理のことを[ プル ]と言い、リモートにある最新データをローカルに適用する処理としてよく使われます。
避けては通れない[ コンフリクト ]
色々な単語を紹介してきましたが、最後に最も重要な単語を紹介します。それが[ コンフリクト ]です。
同じファイルを同時に操作しているメンバーがいて、編集した箇所が被っていた時には以下のような現象が起きる事があります。
[ マージ ]をしたときにこのような現象が起きる事を[ コンフリクト ]と言います。これが起きた時には、残念ながら機械的にマージ処理は行われません。こうなった時には、人の手で正しい形に修正して、改めて[ コミット => プッシュ ]する必要があります。
このコンフリクトですが、対応方法を間違えると大事な修正した内容が消えてしまうなどの大事件になってしまう場合もあります。
なので、『 git 』に慣れるまでの間は、コンフリクトという単語を目撃した時は“必ず、先輩など詳しい人に質問する”ようにし、詳しい人に対応してもらうようにしましょう。
おわりに
今まで書いた内容はあくまで【『git入門』の入門】です。
最初は覚えなくていい要素([ リモート追跡ブランチ ]とか[ マージリクエスト ]とか)は省略してますし、説明もイメージしやすいようにシンプルに書いています。
これらは『git入門』を理解しやすくする目的で書いているからで、ちょっとおかしな説明になっているところもあるかもしれません。
しかし、この内容を読んでから『git入門』を読んでいただければ、きっと『 git 』のことを少しは理解しやすくなっているかと思います。
最初にも書きましたが『 git 』はIT企業で働く時には避けて通れない知識になってきています。初めて向き合う時はとても難しく見えますが、接していくうちに段々と大活躍する一生モノのツールになってくれるはずです。そんな便利なツールと仲良くなるキッカケになって頂ければ幸いです。