プログラミングの勉強はじめてみたけど、たまにgitって言葉を聞くけど・・・
- gitってなに?
- gitを使うメリットってなに?使うべき?
- gitに似ているgithub・gitbushってなに?
みなさんはこんな疑問をもっていませんか?
こんにちは!おへんじといいます!
私はプログラミングを独学で勉強しています
プログラミングを勉強していく中で『git』という言葉をよく耳にするようになりました
気になって調べて使ってみるとgitはすごく便利で素敵なツールだったので
今回は初心者の方でもgitについて理解できるように解説していきます
この記事を読むとわかること・・・
- gitの仕組み
- gitを使うメリット
- gitbushやgithubって何?gitと何が違う?
その前にプログラミングってなに?って方は下の記事で解説しているので
参考にしてみてください
そもそもgitってなに?
gitとは・・・
まずはじめにgitについて解説していきます
まずはじめに結論をいっておくと・・・
ファイルの変更履歴を管理してくれる分散型バージョン管理ツール
まずはじめに
gitを使用しない場合のファイルの管理する方法を説明しておきます
あるファイルの一部分を変更したとします

その際に保存する方法は以下の2通りあります
- 上書き保存
- 名前を付けて保存
2つの保存方法はそれぞれにメリット・デメリットがあります

- メリット :ファイルがごちゃごちゃしない(常に最新版が1つ)
- デメリット:編集前のファイルが残らないため簡単に元に戻せない

- メリット :編集前後の両方ファイルが残るため簡単に元に戻せる
- デメリット:名前を付けて保存するたびにファイルが増えるためフォルダがごちゃごちゃしやすい
このようにどちらの方法でもファイルの管理は可能ですが、
それぞれに『編集前のファイルが残らない』、『ファイルが増えてフォルダがごちゃごちゃしやすい』
などの欠点があります
またプログラミングをしている場合は
- プログラムファイルを修正したらエラーが出るようになって前の状態に戻したい
- いつどんな変更をしたのか履歴として残したい
上記のような場面がよくあります
そんなときに上書き保存や名前を付けて保存では限界があります
そんなときに登場するのが『git』です
gitを使えば・・・
- 編集後でも編集前の状態にすぐに戻せる
- 変更履歴(いつどんな変更をしたのか)を残せる
- 変更を履歴として残すためフォルダがごちゃごちゃしない
- なぜ変更したのかのコメントも残すことができる
- 複数人でプログラムファイルを修正することができる(効率的)
gitの仕組み
gitの仕組みを図にすると・・・

いきなり知らない言葉がでてきたので解説をしておきます
リモートリポジトリ:インターネット上にあるデータを保存する場所
ローカルリポジトリ:個別のパソコン上にあるデータを保存する場所
仕組みを簡単に説明すると・・・
リモートリポジトリと呼ばれる場所でデータを共有してファイルの管理ができます
gitでは・・・
- リモートリポジトリにファイルの変更を反映する操作
- リモートリポジトリのデータをローカルリポジトリに引っ張ってくる操作
などの操作をすることができます(この他にもたくさんの操作があります)
ここまでの説明でgitはリモートリポジトリにデータを集めて
みんなでファイルを共有できることは理解できたと思います
gitにはもう1つ大きな特徴があるので説明しておきます
それは、gitはプログラムのバージョンを管理できる点です
gitにはブランチと呼ばれる概念があります

- マスターブランチ:大元のプログラムファイル(リモートリポジトリのデータ)
いきなりブランチとか言われてもさっぱりわからないと思うので
パズドラで例えて説明していきます
まずパズドラなどのゲームは定期的にバージョンアップがあります
バージョンアップをすると新しい機能が追加されていたり
新たなダンジョンが実装されたりしていますよね
バージョンアップをするということはパズドラのプログラムファイルが変更されたことになります
でもいきなり元のプログラムファイルを変更してしまうとエラーが生じる可能性があります
そうなるとユーザーがパズドラをプレイできなくなってしまします
それを回避するためにブランチという機能を使用します
ここでは、パズドラに機能Aを追加するとします
その機能Aを追加するためにマスターブランチ(現在運用中のパズドラ)からブランチAを作成します
※作成時点のブランチAはマスターブランチのファイルと中身は全く同じです

これからブランチAのファイルに機能Aを追加していきます
ブランチAのファイルを修正するのでマスターブランチ(現在運用中のパズドラ)の
プログラムファイルは変更せずに修正作業ができます
ブランチAで機能Aの追加が完了すると確認・修正作業を行います
エラーが出ないことを確認した後にマスターブランチ(現在運用中のパズドラ)に
ブランチAの内容を統合します
この手順で修正することで現在運用中のパズドラでエラーを起こすことなく
バージョンアップすることができます
例ではパズドラを使って説明しましたが、
gitを使用することで現在運用中のプログラムファイルを運用しながら
新たな機能の追加・不具合の修正などを行うことができます
また修正した箇所を複数人で確認しながら修正作業を行うことができます
git・git bash・git hubって何が違う?
ここまででgitの仕組みがなんとなーく理解できたところで
gitとセットでよく出てくる『git bash』や『git hub』についても説明をしておきます
git hubとは
git hubはgitをwebページで確認・管理ができるwebサービスのことです(無料)
どちらもgithub社によって開発・保守・運用されています
gitとの違いは・・・
- git・・・みんなでプログラムファイルを管理できるツール
- github・・・gitで管理している内容を確認できるwebサービス
初心者の方にもわかるように説明すると・・・

githubを使えばリモートリポジトリの変更履歴をwebページで確認・操作できます
リモートリポジトリは2種類あります
- 全世界に公開するリモートリポジトリ
- 特定の人しか閲覧できないリモートリポジトリ
githubでリポジトリを作成する際にどの種類にするのかを選択できます
〈githubでリポジトリ作成する画面〉(Public:全世界の人が閲覧できる Private:特定の人のみ閲覧できる )

そのため他の人がPublicに設定しているリポジトリは自由に閲覧することができます
git, githubを使用すれば全世界の人と自分のコードを共有してアドバイスを求めたり
有名な人のコードを参考にして開発のヒントにしたりすることができます
実際のgithubはこんな感じのwebページになっています

画像のwebページurl:pyxelのgithub
gitだけでプログラムファイルの管理をすることはできますが
gitの操作方法はCUI(コマンド入力による操作)のため内容を確認するには
都度コマンド操作が必要で少々手間です
そこでそれを解決するためのサービスとしてgithubがあります
ちなみに・・・
- CUI:キーボードぽちぽちのみでパソコンに命令を出す方法
- GUI:画面タッチ・マウスの操作でパソコンに命令を出す方法
CUIは下のような画面で専用のコマンドを入力することでパソコン操作を行います
〈ターミナル画面(Mac)〉

githubでは以下のことができます(一例です)
- gitの変更履歴の確認
- 他の人が変更した箇所に対してのコメント
- リモートリポジトリの内容をローカルリポジトリに引っ張ってくる(その逆も可)
- 全世界の人が書いているプログラムを閲覧できる(めちゃくちゃ勉強になります)
gitbashとは
一言でまとめると・・・
主にWindowsでgitを使用するために必要なBashエミュレータです
- Bashとは・・・シェルのこと
- シェルとは・・・人間が入力した操作をコンピューター側に伝えるプログラム(受付のような中継的な役割)
- エミュレーター・・・本来とは違う環境でも擬似的に動作するようにしたソフトウェア・ハードウェア
いろいろわからない言葉がたくさん出てきたと思うので
それぞれの言葉について分かりやすく説明しているサイトがあったので参考にしてみてください
- Bashについて(「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典)
- シェルについて(「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典)
- エミュレーターについて(TECH CAMPブログ)
要点をまとめると・・・
- gitを使用するにはBashが必要
- BashはWindowsに搭載されていない(MacやLinuxには標準搭載されている)
- WindowsでBashを擬似的に動かすためのソフト(gitbash)が必要
OSについては以下の記事で解説していますのでよかったら参考にしてください
gitbushの画面は以下のような感じになっています
〈gitbash画面〉

ターミナルやコマンドプロンプト と同様の作りになってます
Windowsでgitbashを使うとMacやLinuxなどで使用するコマンドが使用できます
gitを使うべき理由
続いてgitを使うべき理由について説明します
同様な説明を上でしている部分もありますが大切なことなので
もう一度書いておきます
その1 プログラムのバージョンを管理できる
これが一番の理由というより
これができるからgitを使用します
gitの主な機能は・・・
- バージョン管理ができる
- 前のバージョン(変更前)のデータにすぐ戻せる
- いつ(when)誰(who)が、どの(which)ファイルのどこ(where)をなぜ(why)変更したかを履歴で残せる
- 機能を追加する際に他の人がコメントできる機能がある
- エラー原因の特定に便利
ここで1つワンポイントアドバイスです
細かく変更履歴(コミット)を残すとどこで間違えたのかを
特定しやすくなるので変更履歴(コミット)は細かく残すことをオススメします
このようにgitを使用することでバージョン管理、記録、エラーの特定などにも役立つのに
無料で使用できるので使用しない理由が見つかりません
その2 プログラマーとして必須のスキル
これはgitを使用するメリットではありませんが
gitが便利なのでプログラミングをする会社ではほとんどgitが使われています
そのためプログラミングを勉強していて転職を考えている方はgitは覚えておくべきです
というよりgitが使えないとプログラミングで仕事はできません
gitを使用するには覚えることがたくさんありますので
まずははじめにgitの仕組みから覚えていきましょう
gitの使い方についても後日解説予定としています
1人で趣味でプログラミングをはじめる場合もgitを使用するべきか
最後に1人で独学でプログラミングをする場合でもgitを使用するべきかを説明しておきます
結論から言うと・・・
- 1人で始める場合もgitは使用するべきです
理由は以下のとおりです
- プログラムの変更履歴を残せる
- 元のバージョンにすぐに戻せる
- 世界中の人のプログラムを参考にできる
しかし、ここで1つ注意点があります
それは・・・
プログラミング完全初心者はgitを始めることはオススメしません
理由は・・・
- gitを扱うには覚えることがたくさんある
- プログラミングは覚えることがさらにたくさんある
- 一度にプログラミングのこともgitも勉強しようとすると挫折の原因となる
プログラミングの独学で一番大切なのはモチベーションの維持です
一度にたくさんのことに挑戦したい!という気持ちは大切ですが
一度にやりすぎると挫折してしまいます
そのため、まずはプログラミングの基礎を習得した後に
習得した内容でプログラムを作りたい!となった段階で
gitを習得することを強くオススメします
少しずつ取得して一緒に勉強をがんばっていきましょう
まとめ
そもそもgitってなに?
- ファイルの変更履歴を管理してくれる分散型バージョン管理ツール
githubとは
- git hubはgitをwebページで確認・管理ができるwebサービスのこと
gitbashとは
Windowsでgitを使用するために必要なBashエミュレータのこと
gitを使うべき理由
プログラムのバージョンを管理できる
- プログラマーとして必須スキル
(転職したいなら習得すべき)
1人で趣味でプログラミングをはじめる場合もgitを使用するべきか
1人で始める場合もgitは使用するべき
(バージョン管理できる、履歴が残せる)
git, github, gitbashについて少しでも理解できたでしょうか
gitを使用することで効率的にプログラミング作業が可能になります
覚えることはたくさんありますが少しずつ、一緒にプログラミングの勉強がんばっていきましょう!
ohenziblogはプログラミングを独学で始めるための徹底ガイドを目指しています