こんにちは、まくロロです。
今回は、Gitの概念を説明していきたいと思います。エンジニアとして働くことになれば必ず使うものなので、使い方と概念を理解しましょう。
目次
Gitとは
一体Gitとは何者なのかを説明します。
Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。
ウィキペディア
一言で言うとバージョン管理システムということです。
バージョン管理システムは、ファイルの追加や、編集、削除した履歴を一元管理できるツールです。
例えば、ツイッターの開発に今あなたが参加していると仮定してください。新しい機能を追加してほしいと頼まれたら、Twitterのアプケーションを構成している、ファイルにコードを書いて追加しなければいけませんね。
または、「この機能いらないから消しといて」と頼まれたら、ファイルの該当箇所のコードを削除しなければなりません。
チームで開発を行う場合、複数人が大量のファイルを追加したり変更したりするので、もしバグが発生してしまった時などに、誰が、いつ、どの様な、変更をしたのかを特定する必要があります。
そして特定したファイルを修正したり、そのファイルの変更を取り消したりする必要がありますね。このバージョン管理システムを利用することでこれらの作業を可視化して、効率よく対処しましょうということです。
Gitの概念
Gitがバージョン管理システムというこが分かったところで、Gitの概念について説明します。
そもそもバージョン管理システムというのはGit以外にも存在していますが、現在のほとんどの会社ではバージョン管理にGitが使われています。ではなぜGitが使われているかというと、他の管理システムよりも管理方式が優れているからですね。
では何が優れているのか。
分散型を採用している点です!
分散型というのは、リポジトリと呼ばれるファイルの変更履歴を保存してる箇所を複数に分散させることで、効率よくソースコードを管理できる様にした形態のことです。ん~よくわからないので以下で詳しく説明します。
その前に分散型の仕組み理解する前にバージョン管理システムで使われる単語を一通り覚えましょう。
では分散型のバージョン管理の仕方を理解しましょう。まずはこの図を見てください。
上記の図は二人でGitを使用して開発を行なっている状況を表しています。
青と緑のpcの二人がそれぞれファイルを変更して、リモートリポジトリに変更箇所を登録するまでの大まかな流れを表しています。
フロー
- 自分のPC内のエディタで、ファイルのコードをいじる(追加したり、削除したり)
- コードの編集が終わったら、その変更を反映させるために、変更したファイルをadd
- addされた変更ファイルはstageと呼ばれるGitの管理配下に置かれる
- stageにあるGit配下に存在している、ファイルをcommitする
- コミットされた変更ファイルは自分のPC内にあるローカルリポジトリに保存される
- pushすることで、ローカルリポジトリに存在しているファイルをリモートリポジトリに登録することができる
- リモートリポジトリに存在しているコードが本番(インターネットで私たちがみれる状態)に反映されているコードということです
「図とフローでは言及していませんが、最初、自分のpc内にアプリケーションを構成しているファイル群を自分のローカルリポジトリに持って来なければいけません。その持ってくることをpullと言います。pull は英語で引っ張るですね。リモートリポジトリからファイルを引っ張ってくるとイメージすればわかりやすいですね。それから、引っ張ってきたファイルを変更していくという流れです。」
ざっとした流れはこんな感じです。この図を常に頭でイメージしていれば、gitを使いやすくなると思います。
まとめ
今回はgitの概念を説明しました。Gitには、brachという開発モデルを採用しています。このbranchの概念も理解しないとgitを使えるよにならないので、後に、これらに関する記事も作成しますね!
この記事へのコメントはありません。