🦅
GitHub OSSプロジェクトへのコントリビューション完全ガイド
このガイドでは、GitHubで公開されているオープンソースソフトウェア(OSS)プロジェクトに貢献する標準的な流れを解説します。Git初心者でも分かりやすいように、各ステップと各コマンドを詳しく説明していきます。
1. 事前準備
まずは一度だけ行う設定からスタートします。
# Gitの個人情報設定(あなたのコミットに署名として使われます)
git config --global user.name "Your Name" # あなたの名前を設定
git config --global user.email "you@example.com" # あなたのメールアドレスを設定
解説:
-
git config
: 設定情報を保存するコマンド -
--global
: このパソコン全体に適用する設定という意味 -
user.name
とuser.email
: あなたがコードを変更したときに「誰が変更したか」を記録するための情報
任意: GitHub CLIを導入すると後半の作業がシンプルになります
2. リポジトリをFork(自分のアカウントへコピー)する
- ブラウザで貢献したいプロジェクト(例:
https://github.com/anthropics/claude-code
)を開く - 右上の「Fork」ボタンをクリック
- 自分のアカウントを選択
解説:
「Fork」とは、他の人のプロジェクトを自分のGitHubアカウントに複製することです。これにより、元のプロジェクト(上流リポジトリ)を直接変更せずに、自分のコピーで変更を試すことができます。
3. 自分のForkをローカルPCにクローンする
# 自分のGitHubアカウントからプロジェクトをダウンロード
git clone https://github.com/<your-github-id>/XXX.git
cd XXX # ダウンロードしたプロジェクトのフォルダに移動
解説:
-
git clone
: リモート(GitHub上)のリポジトリをローカル(あなたのPC)にコピーするコマンド -
<your-github-id>
: あなたのGitHubユーザー名に置き換えてください -
cd XXX
: クローンしたプロジェクトのディレクトリに移動するコマンド
4. 元のリポジトリを「upstream」として登録
# 元のプロジェクトを「upstream」という名前で参照先に追加
git remote add upstream https://github.com/<元のgithub-id>/XXX.git
git remote -v # 登録された参照先を確認(originとupstreamの両方が表示されるはず)
解説:
-
git remote add
: リモートリポジトリへの参照を追加するコマンド -
upstream
: 元のプロジェクトに付ける慣用的な名前(「上流」という意味) -
origin
: 自分のForkに自動的に付けられる名前 -
git remote -v
: 現在設定されているリモート参照先を一覧表示(v = verbose「詳細」の意味)
5. 変更用の新しいブランチを作成する
# まず自分のmainブランチを最新にする
git checkout main # mainブランチに切り替え
git fetch upstream # 元リポジトリの最新情報を取得
git merge upstream/main # 元リポジトリの変更を自分のmainに取り込む
# 機能や修正ごとに新しいブランチを作成
git checkout -b feat/fix-typo-in-readme # 新しいブランチを作成して切り替え
解説:
-
git checkout
: 別のブランチに切り替えるコマンド -
git fetch
: リモートリポジトリの最新情報を取得するが、まだ反映はしない -
git merge
: 取得した変更を現在のブランチに統合する -
git checkout -b
: 新しいブランチを作成して、同時にそのブランチに切り替える - ブランチ名の慣習:
feat/
(新機能)、fix/
(修正)、docs/
(ドキュメント)などのプレフィックス + 内容の説明
6. コードを編集してコミットする
# ファイルを編集後、変更をステージングエリアに追加
git add path/to/changed-file.ts
# 変更内容を記録(コミット)する
git commit -m "docs(readme): fix minor typo in installation section"
解説:
-
git add
: 変更したファイルを「次のコミットに含める」と指定するコマンド -
git commit
: 指定した変更をバージョン履歴として記録するコマンド -
-m "メッセージ"
: コミットに説明文を付ける(変更内容を簡潔に説明) - コミットメッセージの慣習:
type(scope): detail
の形式が多い
7. 元リポジトリの最新状態を取り込む(任意)
git fetch upstream # 元リポジトリの最新情報を取得
git rebase upstream/main # 現在のブランチに取り込む
解説:
-
git rebase
: 自分の変更を一時的に退避させ、最新の変更を取り込んだ後、自分の変更を再適用する - これにより「衝突」(同じ箇所を異なる人が変更した場合の競合)を早期に発見できる
- 衝突が発生した場合は、ファイルを編集して解決し、
git add
した後、git rebase --continue
で続行
8. 自分のForkにプッシュする
# 変更を自分のGitHubリポジトリに送信(初回は-uで追跡設定も行う)
git push -u origin feat/fix-typo-in-readme
解説:
-
git push
: ローカルの変更をリモート(GitHub)に送信するコマンド -
-u
: このブランチの「上流」を設定(次回からは単にgit push
だけでOK) -
origin
: 自分のForkリポジトリの参照名 -
feat/fix-typo-in-readme
: プッシュするブランチ名
9. Pull Request(PR)を作成する
ブラウザから作成する場合:
- GitHubで自分のForkリポジトリページを開く
- 表示される「Compare & pull request」ボタンをクリック
- タイトルと説明を入力してPRを作成
10. レビュー対応とマージ後の処理
レビューコメントに対応する場合:
# 変更を加えて既存のコミットを更新
git add changed-files
git commit --amend # 前回のコミットに変更を追加
git push --force-with-lease # 強制的にプッシュ(rebaseした場合は必須)
マージ後にローカルを整理:
git checkout main # mainブランチに戻る
git pull upstream main # 元リポジトリの最新変更を取得
git branch -d feat/fix-typo-in-readme # 使用済みブランチを削除
git push origin --delete feat/fix-typo-in-readme # リモートのブランチも削除
解説:
-
git commit --amend
: 前回のコミットに変更を追加(修正)する -
--force-with-lease
: 強制的に上書きするが、リモートに他の人の変更がないことを確認する安全なオプション -
git branch -d
: ローカルのブランチを削除する -
git push origin --delete
: リモート(GitHub)上のブランチを削除する
まとめ
GitHubのOSSプロジェクトへのコントリビューションは、次のステップで行います:
- Fork → 自分のアカウントにコピー
- Clone → ローカルにダウンロード
- 新ブランチ作成 → 作業スペースを用意
- 変更・コミット → 修正内容を記録
- Push → GitHubに送信
- PR作成 → 元のプロジェクトへの取り込み依頼
- レビュー対応 → 必要に応じて修正
コントリビューションのコツ:
- 1つの目的につき1ブランチ/1PRが基本(レビューが簡単になります)
- 小さな変更から始めると成功しやすい
- プロジェクトごとのコーディング規約やコントリビューションガイドラインがあれば従う
Discussion