Git・GitHub・CI/CDとは(全体像)
この3つは、現代のソフト開発を支える道具だ。
身近にたとえると、みんなで1冊の本を書く共同執筆だ。Gitは「各自の手元で原稿のすべての版(履歴)を管理するノート」、GitHubは「クラウドに原稿を置いて、見せ合い・指摘し合える場所」、CI/CDは「原稿を出すと、自動で校正・印刷・配本まで進むベルトコンベア」。
押さえるのは、Gitは手元のツール、GitHubは共有の場所、CI/CDは自動化という役割の違いだ。
詳しく:3つの役割とmerge・rebaseの違いだけ覚えれば戦える
ここが記事の心臓部。まず3つの役割を整理しましょう。
Git・GitHub・CI/CDの役割
| 道具 | 役割 | たとえ |
|---|---|---|
| Git | 変更の履歴を記録・管理するツール(手元で動く) | 各自の原稿ノート |
| GitHub | Gitの内容を共有して共同作業するサービス | クラウドの共有原稿 |
| CI/CD | ビルド・テスト・配備を自動化するしくみ | 自動の校正・印刷ライン |
ここで一番のひっかけが「Git=GitHub」という誤解です。Gitは手元(ローカル)で動くツール、GitHubはそれをクラウドで共有するサービスで、別物。GitHubのほかにGitLabやBitbucketといった共有サービスもあります。
GitはLinuxを作ったリーナス・トーバルズが作った分散型のツールで、各自が完全な履歴を手元に持てるのが特徴です。GitHubでは、変更のレビューを依頼するプルリクエストなどで共同作業を進めます。
次に、変更をまとめる2つのやり方、mergeとrebase。ここも取り違えやすいポイントです。
mergeとrebaseの違い
| 操作 | やること | 履歴の見え方 |
|---|---|---|
| merge | 枝(ブランチ)を合流させる | 分かれて合わさる樹形(履歴は残る) |
| rebase | 履歴を並べ直して一直線にする | きれいな1本の直線(履歴を書き換える) |
mergeは枝を合流させる方法で、分かれて合わさった形がそのまま履歴に残ります。rebaseは履歴を並べ直して一直線にする方法で、見た目はきれいですが履歴を書き換えるため、みんなで使う共有ブランチでは原則使いません。
最後にCI/CD。CI(継続的統合)はコミットのたびに自動でビルドとテストを行い、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)
GitとGitHubに関する次の記述のうち、正しいものはどれか。
- Gitは変更履歴を管理する手元のツールで、GitHubはそれを共有して共同作業するサービスだ
- Gitはクラウドの共有サービスで、GitHubは手元で動く管理ツールにすぎないとされている
- GitもGitHubもまったく同じもので、ツールかサービスかの違いはないものとされているのだ
- GitもGitHubも紙に印刷する装置のことで、開発とはいっさい無関係なものとされている
解答は 1 ですよ。
Gitは変更履歴を管理する手元のツール、GitHubはそれを共有して共同作業するサービスですね。別物です。
選択肢2のGitとGitHubが逆、選択肢3の「同じもの」、選択肢4の「印刷する装置」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | Gitはツール・GitHubはサービス |
| 2 | ✗ | GitとGitHubの説明が逆 |
| 3 | ✗ | ツールとサービスで別物 |
| 4 | ✗ | 印刷する装置ではない |
オリジナル問題2(mergeとrebase)
mergeとrebaseに関する次の記述のうち、正しいものはどれか。
- mergeは履歴を一直線に書き換え、rebaseは枝を合流させて履歴を残す方式とされているのだ
- mergeもrebaseもまったく同じ操作で、履歴の見え方に違いはないものとされているものだ
- mergeは枝を合流させて履歴を残し、rebaseは履歴を一直線に並べ直して書き換える操作だ
- mergeもrebaseも紙に印刷する手順のことで、変更の統合とは無関係なものとされているのだ
解答は 3 ですよ。
mergeは枝を合流させて履歴を残し、rebaseは履歴を一直線に並べ直して書き換える操作ですね。共有ブランチでrebaseは原則使いません。
選択肢1のmergeとrebaseが逆、選択肢2の「同じ操作」、選択肢4の「印刷する手順」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | mergeとrebaseの説明が逆 |
| 2 | ✗ | 履歴の見え方が違う |
| 3 | ✓ | mergeは合流・rebaseは一直線 |
| 4 | ✗ | 印刷する手順ではない |
オリジナル問題3(CI/CD)
CI/CDに関する次の記述のうち、正しいものはどれか。
- CIは紙に印刷する装置のことで、ビルドやテストとはいっさい無関係なものとされている
- CIはコミットのたびに自動でビルド・テストし、CDはテストを通ったものを自動で配備する
- CIもCDも手作業でテストや配備を行う方式で、自動化とは無関係なものとされているものだ
- CIは本番環境を必ず止める作業のことで、開発の自動化には使えないものとされているのだ
解答は 2 ですよ。
CIはコミットのたびに自動でビルド・テストし、CDはテストを通ったものを自動で配備しますね。GitHubのActionsなどで実現します。
選択肢1の「印刷する装置」、選択肢3の「手作業」、選択肢4の「本番を必ず止める」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 印刷する装置ではない |
| 2 | ✓ | CIは自動ビルド・テスト、CDは自動配備 |
| 3 | ✗ | 自動化のしくみ |
| 4 | ✗ | 本番を止める作業ではない |
まとめ
押さえどころ
- 🔴 GitとGitHub = Gitは変更履歴を管理する手元のツール、GitHubはそれを共有して共同作業するサービス。別物。
- 🔴 mergeとrebase = mergeは枝を合流させ履歴を残す、rebaseは一直線に並べ直して書き換える(共有では使わない)。
- 🟡 CI/CD = CIは自動ビルド・テスト、CDは自動配備。GitHub Actionsなどで実現。
次に学ぶ
- コンテナ・Kubernetes ── CI/CDで自動配備する対象になる、コンテナ運用のしくみ。
- 現代言語(Rust・Go・TypeScript) ── DevOpsツールの実装に使われる、現代のプログラミング言語。
執筆: SikakuQuest編集部