【初心者向け】GitとGitHubは何が違うの?違いや使い方を解説!

git-prograshi(プロぐらし)-kv git/github
記事内に広告が含まれていることがあります。

「Git」と「GitHub」は名前が似ていますが、実は役割が全く異なります

開発を始めたばかりだと、「どちらもコードを管理するもの」という認識で混同しがちです。

この記事では、GitとGitHubの違いを、初心者の方にも分かりやすく解説しています。


Gitとは何か?

Gitの概要

Gitは、プログラムのコードやファイルなどのすべての変更履歴を自動で、完璧に記録・管理できるバージョン管理ソフトです。

git commitgit addなどのコマンドはGitの機能の一つです。

MEMO

オンライン共有用のGitHubと比較して、Gitはローカルでの作業に特化したツールです。


Gitの主な機能

コミットの作成

変更が一段落するごとに、その時点のファイルの「スナップショット(写真)」を撮り、誰が、なぜ、何を変えたかを記録します。

このことを「コミット」と言います。

ゲームでいう「セーブポイント」に似ています。


過去への復元

いつでも過去のどのコミット(セーブポイント)にも瞬時に戻すことができます。

「やっぱりあの時のバージョンに戻したい」という処理が可能になります。


作業の分岐(ブランチ)

メインの作業を続けながら、「新機能の追加」や「バグの修正」といった別の作業を、メインに影響を与えずに並行して進めることができます。

作業が完了したら、メインの作業に合流(マージ)させます。


Gitの主な開発の流れ

Gitを使った開発の基本的な流れは、以下のステップの繰り返しです。

Gitを使った開発の流れ
  1. 編集する:ファイルを編集する。
  2. 確認する$ git status
  3. ステージング: $ git add [ファイル名]
  4. 記録(コミット): $ git commit -m "変更内容の要約(メモ)"
  5. 共有(プッシュ): $ git push origin [ブランチ名]


ご参考

Gitを使う上でステージングの理解は欠かせません。ステージングとは何か?については下記をご参考ください。

> 【Git】ステージングとは何か?なぜ必要なのか?実例のコードで分かりやすく解説!(git add)


Gitの主なコード

初期設定とリポジトリの準備

コマンド用途例と説明
git init新しいリポジトリ(保管庫)を初期化する。$ git init 現在のディレクトリをGitで管理できるようにします。
git cloneリモートリポジトリをローカルに複製する。$ git clone [URL] 例:git clone https://github.com/user/repo.git
git configGitの設定(ユーザー名、メールアドレスなど)を行う。$ 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データ保管場所です。

プログラムのソースコードを保存・管理するだけでなく、複数人が共同で開発を進め、コミュニケーションを取るための機能が統合されています。

MEMO

ローカル作業に特化した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(継続的インテグレーション/継続的デプロイ)機能です。

例えば以下のような作業が自動化できます。

GitHub Actionsでできること
  1. 自動デプロイ: メインブランチにPRがマージされたら、本番サーバーに自動でコードを反映させる。
  2. コードの整形: コードをコミットするたびに、自動でコーディングスタイルを統一する処理を実行する。
  3. 自動テストの実行: 新しいコードをプッシュするたびに、バグがないか自動でテストを実行できます。


GitHubはマイクロソフトのサービス

GitHubは、もともと独立した企業(GitHub, Inc.)によって設立され、運営されていました。

2018年にマイクロソフトにより買収されました。

ただし、GitHubの運営は基本的に独立した体制で行われ、マイクロソフト製品群とは切り離されて、すべての開発者にとってオープンなプラットフォームであり続けることが約束されています。


GitHubは必須?

結論から言うとGitHubは必須ではありません。

一人の開発者として、コードを安全に管理し、変更を追跡したいだけであれば、ローカルGitだけで十分にその目的を果たせます。

GitHubを使うメリットは、共同作業やサイトバックアップをしたい場合です。

タイトルとURLをコピーしました