「Git」と「GitHub」は名前が似ていますが、実は役割が全く異なります。
開発を始めたばかりだと、「どちらもコードを管理するもの」という認識で混同しがちです。
この記事では、GitとGitHubの違いを、初心者の方にも分かりやすく解説しています。
Gitとは何か?
Gitの概要
Gitは、プログラムのコードやファイルなどのすべての変更履歴を自動で、完璧に記録・管理できるバージョン管理ソフトです。
git commit や git addなどのコマンドはGitの機能の一つです。
オンライン共有用のGitHubと比較して、Gitはローカルでの作業に特化したツールです。
Gitの主な機能
コミットの作成
変更が一段落するごとに、その時点のファイルの「スナップショット(写真)」を撮り、誰が、なぜ、何を変えたかを記録します。
このことを「コミット」と言います。
ゲームでいう「セーブポイント」に似ています。
過去への復元
いつでも過去のどのコミット(セーブポイント)にも瞬時に戻すことができます。
「やっぱりあの時のバージョンに戻したい」という処理が可能になります。
作業の分岐(ブランチ)
メインの作業を続けながら、「新機能の追加」や「バグの修正」といった別の作業を、メインに影響を与えずに並行して進めることができます。
作業が完了したら、メインの作業に合流(マージ)させます。
Gitの主な開発の流れ
Gitを使った開発の基本的な流れは、以下のステップの繰り返しです。
- 編集する:ファイルを編集する。
- 確認する:
$ git status - ステージング:
$ git add [ファイル名] - 記録(コミット):
$ git commit -m "変更内容の要約(メモ)" - 共有(プッシュ):
$ git push origin [ブランチ名]
Gitを使う上でステージングの理解は欠かせません。ステージングとは何か?については下記をご参考ください。
Gitの主なコード
初期設定とリポジトリの準備
| コマンド | 用途 | 例と説明 |
git init | 新しいリポジトリ(保管庫)を初期化する。 | $ git init 現在のディレクトリをGitで管理できるようにします。 |
git clone | リモートリポジトリをローカルに複製する。 | $ git clone [URL] 例:git clone https://github.com/user/repo.git |
git config | Gitの設定(ユーザー名、メールアドレスなど)を行う。 | $ git config --global user.name "Your Name" $ git config --global user.email "your@example.com" |
ローカルでの作業と履歴の記録
| コマンド | 用途 | 例と説明 |
git status | 現在のリポジトリの状態を確認する。 | $ git status 変更されたファイル、コミット待ちのファイルなどを確認します。 |
git add | 変更をステージングエリアに追加する。 | $ git add index.html 次にコミット(記録)したいファイルを指定します。git add .で全変更を追加。 |
git commit | ステージングエリアの変更を履歴に記録(コミット)する。 | $ git commit -m "ユーザー登録機能を実装" -mオプションの後に、変更内容を要約したメッセージを記述します。 |
git log | コミット履歴を表示する。 | $ git log 過去のコミットメッセージ、作者、日時などを一覧で確認します。 |
ブランチ操作(作業の分岐)
| コマンド | 用途 | 例と説明 |
git branch | ブランチを操作する(作成、一覧表示)。 | $ git branch feature/login feature/loginという新しいブランチを作成します。git branchで一覧表示。 |
git switch | 作業ブランチを切り替える。(git checkoutの代替) | $ git switch feature/login 作業対象のブランチを切り替えます。 |
git switch -c | 新しいブランチを作成し、すぐに切り替える。 | $ git switch -c new-feature 新機能開発などでよく使われます。 |
git merge | 別のブランチの変更を現在のブランチに取り込む。 | $ git merge feature/login feature/loginでの作業を現在のブランチに統合します。 |
リモート(GitHubなど)との連携
| コマンド | 用途 | 例と説明 |
git push | ローカルのコミットをリモートリポジトリに送信する。 | $ git push origin main ローカルのmainブランチの変更を、リモートのoriginにアップロードします。 |
git pull | リモートの変更を取得し、ローカルに統合する。 | $ git pull origin main リモートの最新の変更を取り込み、自分のローカルリポジトリに反映します。 |
git fetch | リモートの変更を取得するが、ローカルには統合しない。 | $ git fetch origin リモートの状況(他の人がどんなブランチを作ったかなど)を確認する際に使います。 |
GitHubとは何か?
GitHubの概要
GitHub(ギットハブ)は、オンラインの共同作業用のWEBプラットフォーム」です。より簡単に言うと、インターネット上のGitのデータ保管場所です。
プログラムのソースコードを保存・管理するだけでなく、複数人が共同で開発を進め、コミュニケーションを取るための機能が統合されています。
ローカル作業に特化したGitに対して、GitHubは「オンライン共有用」のツールです。
GitHubの語源
GitHubは、その名の通り以下の2つの要素を組み合わせたサービスです。
| 要素 | 説明 | 役割 |
| Git(ギット) | 分散型バージョン管理システムという、ファイルの変更履歴を記録・管理するツール。 | 道具(機能):履歴管理、セーブポイント(コミット)、作業の分岐(ブランチ)の機能を提供。 |
| Hub(ハブ) | 中心地・拠点という意味。Web上でGitリポジトリをホスティングするサービス。 | 場所(プラットフォーム):コードの保管庫、共有、チームでの協調作業の場を提供。 |
GitHubで何ができるか?
開発者はGitでローカル(自分のPC)で作業した履歴を、GitHubという「オンラインの共有スペース」に簡単にアップロードし、他のメンバーと共有したり、フィードバックを受けたりすることができます。
リモートリポジトリになる
git pushの送信先リポジトリとしてGitHubが選ばれることがほとんどです。
ローカルのリポジトリに対して、GitHub上のリポジトリを「リモートリポジトリ」と言います。
リポジトリ(Repository)とは、Gitにおいて、ファイルやフォルダのすべての変更履歴を保存・管理するための保管庫(データベース)のことです。
プルリク(プルリクエスト)ができる
GitHubを使うことで、他の開発者に自分の変更をレビューしてもらい、最終的にメインのコードに統合するための依頼(提案)であるプルリクをすることができます。
Issue (課題管理)の発行ができる
Issue(イシュ―)は、バグ報告、新機能の要望、やるべきタスクなどを一元的に管理する機能です。
開発の透明性を高め、タスクの進捗状況をチーム全体や外部の貢献者が把握できるようになります。
開発ワークフローの自動化 (GitHub Actions)
GitHub Actionsは、コードの変更をトリガーとして、テスト、ビルド、デプロイなどの定型作業を自動で実行するCI/CD(継続的インテグレーション/継続的デプロイ)機能です。
例えば以下のような作業が自動化できます。
- 自動デプロイ: メインブランチにPRがマージされたら、本番サーバーに自動でコードを反映させる。
- コードの整形: コードをコミットするたびに、自動でコーディングスタイルを統一する処理を実行する。
- 自動テストの実行: 新しいコードをプッシュするたびに、バグがないか自動でテストを実行できます。
GitHubはマイクロソフトのサービス
GitHubは、もともと独立した企業(GitHub, Inc.)によって設立され、運営されていました。
2018年にマイクロソフトにより買収されました。
ただし、GitHubの運営は基本的に独立した体制で行われ、マイクロソフト製品群とは切り離されて、すべての開発者にとってオープンなプラットフォームであり続けることが約束されています。
GitHubは必須?
結論から言うとGitHubは必須ではありません。
一人の開発者として、コードを安全に管理し、変更を追跡したいだけであれば、ローカルGitだけで十分にその目的を果たせます。
GitHubを使うメリットは、共同作業やサイトバックアップをしたい場合です。

