Git・GitHub・CI/CDとは?Gitは変更履歴を管理するツール

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

Git・GitHub・CI/CDとは(全体像)

この3つは、現代のソフト開発を支える道具だ。

身近にたとえると、みんなで1冊の本を書く共同執筆だ。Gitは「各自の手元で原稿のすべての版(履歴)を管理するノート」、GitHubは「クラウドに原稿を置いて、見せ合い・指摘し合える場所」、CI/CDは「原稿を出すと、自動で校正・印刷・配本まで進むベルトコンベア」。

押さえるのは、Gitは手元のツール、GitHubは共有の場所、CI/CDは自動化という役割の違いだ。


詳しく:3つの役割とmerge・rebaseの違いだけ覚えれば戦える

ここが記事の心臓部。まず3つの役割を整理しましょう。

Git・GitHub・CI/CDの役割

道具役割たとえ
Git変更の履歴を記録・管理するツール(手元で動く)各自の原稿ノート
GitHubGitの内容を共有して共同作業するサービスクラウドの共有原稿
CI/CDビルド・テスト・配備を自動化するしくみ自動の校正・印刷ライン

ここで一番のひっかけが「Git=GitHub」という誤解です。Gitは手元(ローカル)で動くツールGitHubはそれをクラウドで共有するサービスで、別物。GitHubのほかにGitLabやBitbucketといった共有サービスもあります。

GitはLinuxを作ったリーナス・トーバルズが作った分散型のツールで、各自が完全な履歴を手元に持てるのが特徴です。GitHubでは、変更のレビューを依頼するプルリクエストなどで共同作業を進めます。

次に、変更をまとめる2つのやり方、mergerebase。ここも取り違えやすいポイントです。

mergeとrebaseの違い

操作やること履歴の見え方
merge枝(ブランチ)を合流させる分かれて合わさる樹形(履歴は残る)
rebase履歴を並べ直して一直線にするきれいな1本の直線(履歴を書き換える)

mergeは枝を合流させる方法で、分かれて合わさった形がそのまま履歴に残ります。rebaseは履歴を並べ直して一直線にする方法で、見た目はきれいですが履歴を書き換えるため、みんなで使う共有ブランチでは原則使いません。

最後にCI/CDCI(継続的統合)はコミットのたびに自動でビルドとテストを行い、CD(継続的デリバリー/デプロイ)はテストを通ったものを自動で配備します。GitHubのActionsなどで実現します。

わかりやすく言い換えると

要するに、共同執筆のたとえで覚えるとラクです。

3つの役割 … Gitは手元の原稿ノート、GitHubは共有の場所、CI/CDは自動の校正・印刷ライン

mergeとrebase … mergeは枝を合流(履歴が残る)、rebaseは一直線に並べ直す(履歴を書き換える・共有では使わない)

CI/CD … CIは自動でビルド・テスト、CDは自動で配備

つまり、「Gitはツール・GitHubは場所」「mergeは合流・rebaseは一直線」、この2点が試験の急所です。


試験のツボ

🔴 一番出る:GitとGitHubの違い

①Git = 変更の履歴を管理する、手元で動くツール(分散型)

②GitHub = Gitの内容を共有して共同作業するサービス(プルリクエストなど)

🔴 次に出る:mergeとrebase

①merge = 枝を合流させる(分かれて合わさる履歴が残る)

②rebase = 履歴を一直線に並べ直す(履歴を書き換える・共有ブランチでは使わない)

🟡 押さえると安定:CI/CD

①CI(継続的統合) = コミットのたびに自動でビルド・テスト

②CD(継続的デリバリー/デプロイ) = テストを通ったものを自動で配備


よくある間違い

「GitとGitHubは同じもの」→ ✗  Gitは手元で動く管理ツール、GitHubはそれを共有して共同作業するサービス。別物。

「mergeとrebaseは同じ操作」→ ✗  mergeは枝を合流させて履歴を残す、rebaseは履歴を一直線に書き換える。共有ブランチでrebaseは原則使わない。

「CIは手作業でテストすることを指す」→ ✗  CI(継続的統合)はコミットのたびに自動でビルド・テストするしくみ。手作業ではない。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(GitとGitHub)

📝 オリジナル問題 1 GitとGitHubの違い

GitとGitHubに関する次の記述のうち、正しいものはどれか。

  1. Gitは変更履歴を管理する手元のツールで、GitHubはそれを共有して共同作業するサービスだ
  2. Gitはクラウドの共有サービスで、GitHubは手元で動く管理ツールにすぎないとされている
  3. GitもGitHubもまったく同じもので、ツールかサービスかの違いはないものとされているのだ
  4. GitもGitHubも紙に印刷する装置のことで、開発とはいっさい無関係なものとされている
テクマスター
テクマスター 解答・解説

解答は 1 ですよ。

Gitは変更履歴を管理する手元のツール、GitHubはそれを共有して共同作業するサービスですね。別物です。

選択肢2のGitとGitHubが逆、選択肢3の「同じもの」、選択肢4の「印刷する装置」はどれも誤りですよ。

選択肢判定理由
1Gitはツール・GitHubはサービス
2GitとGitHubの説明が逆
3ツールとサービスで別物
4印刷する装置ではない

オリジナル問題2(mergeとrebase)

📝 オリジナル問題 2 mergeとrebaseの違い

mergeとrebaseに関する次の記述のうち、正しいものはどれか。

  1. mergeは履歴を一直線に書き換え、rebaseは枝を合流させて履歴を残す方式とされているのだ
  2. mergeもrebaseもまったく同じ操作で、履歴の見え方に違いはないものとされているものだ
  3. mergeは枝を合流させて履歴を残し、rebaseは履歴を一直線に並べ直して書き換える操作だ
  4. mergeもrebaseも紙に印刷する手順のことで、変更の統合とは無関係なものとされているのだ
テクマスター
テクマスター 解答・解説

解答は 3 ですよ。

mergeは枝を合流させて履歴を残し、rebaseは履歴を一直線に並べ直して書き換える操作ですね。共有ブランチでrebaseは原則使いません。

選択肢1のmergeとrebaseが逆、選択肢2の「同じ操作」、選択肢4の「印刷する手順」はどれも誤りですよ。

選択肢判定理由
1mergeとrebaseの説明が逆
2履歴の見え方が違う
3mergeは合流・rebaseは一直線
4印刷する手順ではない

オリジナル問題3(CI/CD)

📝 オリジナル問題 3 CI/CDの意味

CI/CDに関する次の記述のうち、正しいものはどれか。

  1. CIは紙に印刷する装置のことで、ビルドやテストとはいっさい無関係なものとされている
  2. CIはコミットのたびに自動でビルド・テストし、CDはテストを通ったものを自動で配備する
  3. CIもCDも手作業でテストや配備を行う方式で、自動化とは無関係なものとされているものだ
  4. CIは本番環境を必ず止める作業のことで、開発の自動化には使えないものとされているのだ
テクマスター
テクマスター 解答・解説

解答は 2 ですよ。

CIはコミットのたびに自動でビルド・テストし、CDはテストを通ったものを自動で配備しますね。GitHubのActionsなどで実現します。

選択肢1の「印刷する装置」、選択肢3の「手作業」、選択肢4の「本番を必ず止める」はどれも誤りですよ。

選択肢判定理由
1印刷する装置ではない
2CIは自動ビルド・テスト、CDは自動配備
3自動化のしくみ
4本番を止める作業ではない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る