Git・GitHub用語入門。commit、branch、pushを整理
GitとGitHubの違いから、リポジトリ、コミット、ブランチ、push、pull、Pull Requestまで説明します。
GitHubを使い始めると、保存に関係する言葉がいくつも出てきます。
このページは、初めて自分のコードを保存・共有する人のための入門記事です。まずは、自分のパソコン内の作業と、GitHub上の作業を分けて考えましょう。
まずは3つだけ覚えよう
- Gitは変更履歴を残す仕組み、GitHubはその履歴をオンラインで共有するサービスです。
- コミットはパソコン内の記録、pushはその記録をGitHubへ送る操作です。
- ブランチを使うと、完成版を保ったまま別の場所で修正を試せます。
GitとGitHubの違い
| 用語 | 主な役割 |
|---|---|
| Git | ファイルの変更履歴を管理する仕組み |
| GitHub | Gitのプロジェクトをオンラインで保存・共有するサービス |
Gitは、インターネットにつながっていなくても使えます。GitHubは、Gitで管理した内容を共有し、確認や相談をしやすくする場所です。
名前は似ていますが、同じものではありません。
リポジトリとコミット
リポジトリは、ファイルと変更履歴をまとめて管理する場所です。普通のフォルダとの違いは、過去の状態を記録できることです。
コミットは、ある時点の変更を履歴として保存する操作です。何を変えたか分かる短い説明を、コミットメッセージとして付けます。
用語メモ: コミットは、ゲームのセーブポイントに近いものです。ただし、保存する前に変更内容を選び、説明を付けます。
ブランチ、マージ、コンフリクト
ブランチは、完成版をすぐに変えず、別の作業場所で修正を試すための仕組みです。通常は安定した main ブランチから、新しい作業用ブランチを作ります。
マージは、分かれていたブランチの変更を一つにまとめる操作です。
同じファイルの同じ部分が別々に変更され、Gitがどちらを採用すべきか判断できないと、コンフリクトが発生します。
コンフリクトは故障ではありません。内容を確認し、残す変更を人が選ぶ必要がある状態です。
たとえば同じ一行を、一方では「赤」、もう一方では「青」に変えた場合、Gitだけではどちらが正しいか決められません。これがコンフリクトです。
clone(クローン)とfork(フォーク)
| 用語 | コピー先 | 主な用途 |
|---|---|---|
| clone | 自分のパソコン | ファイルを編集する |
| fork | 自分のGitHubアカウント | 他人のリポジトリを独立して扱う |
cloneした後も、GitHubから新しい変更を受け取ったり、自分の変更を送ったりできます。
forkは、元のプロジェクトへ直接書き込めない場合に、変更案を作るためによく使われます。
push(プッシュ)とpull(プル)
| 用語 | データの向き |
|---|---|
| push | パソコンからGitHubへ送る |
| pull | GitHubからパソコンへ取り込む |
pushするのは、基本的にコミット済みの変更です。pullは、オンライン側の新しい変更を取得し、現在のブランチへ統合します。
「pushは押し出す」「pullは引き寄せる」と考えると覚えやすくなります。
Pull Requestとは
**Pull Request(プルリクエスト)**は、あるブランチの変更を別のブランチへ取り込んでもらうための提案です。PRとも呼ばれます。
単なる送信ではなく、変更内容を確認し、相談し、問題がなければマージするための場所です。一人でサイトを運営する場合も、公開前の確認記録として使えます。
基本の流れ
初めて使うときは、次の順番を押さえれば十分です。
- リポジトリを複製する(clone)
- 作業用ブランチ(branch)を作る
- ファイルを編集する
- 変更を記録(commit)する
- GitHubへ送る(push)
- Pull Requestを作る
- 確認後に統合(merge)する
英単語をすべて覚えるより、変更が「パソコン内にあるのか」「GitHubへ届いているのか」を意識すると迷いにくくなります。
まとめ
- Gitはパソコン内でも使え、GitHubはオンラインでの共有に使います。
- commit、push、pullは、変更が今どこにあるかを考えると区別できます。
- コンフリクトが起きても故障ではありません。残す内容を人が選べば解決できます。
参考資料
以下は説明の確認に使った公式資料です。英語のページは、必要になったときに確認すれば十分です。