Gitとは?Gitの概念を理解しよう

こんにちは、まくロロです。

今回は、Gitの概念を説明していきたいと思います。エンジニアとして働くことになれば必ず使うものなので、使い方と概念を理解しましょう。

Gitとは

一体Gitとは何者なのかを説明します。

Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。

ウィキペディア

一言で言うとバージョン管理システムということです。

バージョン管理システムは、ファイルの追加や、編集、削除した履歴を一元管理できるツールです。

例えば、ツイッターの開発に今あなたが参加していると仮定してください。新しい機能を追加してほしいと頼まれたら、Twitterのアプケーションを構成している、ファイルにコードを書いて追加しなければいけませんね。

または、「この機能いらないから消しといて」と頼まれたら、ファイルの該当箇所のコードを削除しなければなりません。

チームで開発を行う場合、複数人が大量のファイルを追加したり変更したりするので、もしバグが発生してしまった時などに、誰が、いつ、どの様な、変更をしたのかを特定する必要があります。

そして特定したファイルを修正したり、そのファイルの変更を取り消したりする必要がありますね。このバージョン管理システムを利用することでこれらの作業を可視化して、効率よく対処しましょうということです。

Gitの概念

Gitがバージョン管理システムというこが分かったところで、Gitの概念について説明します。

そもそもバージョン管理システムというのはGit以外にも存在していますが、現在のほとんどの会社ではバージョン管理にGitが使われています。ではなぜGitが使われているかというと、他の管理システムよりも管理方式が優れているからですね。

では何が優れているのか。

分散型を採用している点です!

分散型というのは、リポジトリと呼ばれるファイルの変更履歴を保存してる箇所を複数に分散させることで、効率よくソースコードを管理できる様にした形態のことです。ん~よくわからないので以下で詳しく説明します。

その前に分散型の仕組み理解する前にバージョン管理システムで使われる単語を一通り覚えましょう。

  • リポジトリ・・・ファイルの変更履歴が記録してある場所
  • ステージ(index)・・・commitでローカルリポジトリに登録される内容を一時保存する場(控え室みたいなイメージ)
  • リモート・・・複数人と共有する環境
  • ローカル・・・自分のPC内の環境
  • add・・・ファイルの変更点をgit管理の対象に追加する
  • commit・・・ステージ(index)に登録されている変更点をローカルリポジトリに送信すること
  • push・・・ローカルリポジトリにあるcommitをリモートリポジトリに送信すること
  • では分散型のバージョン管理の仕方を理解しましょう。まずはこの図を見てください。

    上記の図は二人でGitを使用して開発を行なっている状況を表しています。

    青と緑のpcの二人がそれぞれファイルを変更して、リモートリポジトリに変更箇所を登録するまでの大まかな流れを表しています。

    フロー

    1. 自分のPC内のエディタで、ファイルのコードをいじる(追加したり、削除したり)
    2. コードの編集が終わったら、その変更を反映させるために、変更したファイルをadd
    3. addされた変更ファイルはstageと呼ばれるGitの管理配下に置かれる
    4. stageにあるGit配下に存在している、ファイルをcommitする
    5. コミットされた変更ファイルは自分のPC内にあるローカルリポジトリに保存される
    6. pushすることで、ローカルリポジトリに存在しているファイルをリモートリポジトリに登録することができる
    7. リモートリポジトリに存在しているコードが本番(インターネットで私たちがみれる状態)に反映されているコードということです

    「図とフローでは言及していませんが、最初、自分のpc内にアプリケーションを構成しているファイル群を自分のローカルリポジトリに持って来なければいけません。その持ってくることをpullと言います。pull は英語で引っ張るですね。リモートリポジトリからファイルを引っ張ってくるとイメージすればわかりやすいですね。それから、引っ張ってきたファイルを変更していくという流れです。」

    ざっとした流れはこんな感じです。この図を常に頭でイメージしていれば、gitを使いやすくなると思います。

    まとめ

    今回はgitの概念を説明しました。Gitには、brachという開発モデルを採用しています。このbranchの概念も理解しないとgitを使えるよにならないので、後に、これらに関する記事も作成しますね!

    基本的なRuby on Railsの概念前のページ

    自己投資と勉強で未来を変える次のページ

    関連記事

    1. プログラミング

      【エンジニア】サービス開発とアルゴリズムは別物?

      こんにちはまくロロです。今回は「サービス開発とアルゴリズムは別物であ…

    2. プログラミング

      jQueryの基本を学ぼう

      こんにちは、まくロロです。アニメーションを実装する際によく使…

    3. プログラミング

      未経験エンジニア学習順序【アプリリリースまで】

      こんにちはまくロロです。今回は、未経験から一人でサービスをリ…

    4. プログラミング

      dockerを使ってGolangの環境構築

      こんにちは、まくロロです。最近はサーバーをGo、フロントにR…

    5. プログラミング

      Saas, Paas, Iaasとは

      今回はクラウドの技術レイヤーで分けられるSaas, Paas, Ia…

    6. プログラミング

      Goでのクロージャ

      久しぶりの更新です。最近は就活関係で色々と忙しくブログの更新ができて…

    コメント

    1. この記事へのコメントはありません。

    1. この記事へのトラックバックはありません。

    最近の記事

    PAGE TOP