🦅

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.nameuser.email: あなたがコードを変更したときに「誰が変更したか」を記録するための情報

任意: GitHub CLIを導入すると後半の作業がシンプルになります

2. リポジトリをFork(自分のアカウントへコピー)する

  1. ブラウザで貢献したいプロジェクト(例:https://github.com/anthropics/claude-code)を開く
  2. 右上の「Fork」ボタンをクリック
  3. 自分のアカウントを選択

解説:
「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)を作成する

ブラウザから作成する場合:

  1. GitHubで自分のForkリポジトリページを開く
  2. 表示される「Compare & pull request」ボタンをクリック
  3. タイトルと説明を入力して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プロジェクトへのコントリビューションは、次のステップで行います:

  1. Fork → 自分のアカウントにコピー
  2. Clone → ローカルにダウンロード
  3. 新ブランチ作成 → 作業スペースを用意
  4. 変更・コミット → 修正内容を記録
  5. Push → GitHubに送信
  6. PR作成 → 元のプロジェクトへの取り込み依頼
  7. レビュー対応 → 必要に応じて修正

コントリビューションのコツ:

  • 1つの目的につき1ブランチ/1PRが基本(レビューが簡単になります)
  • 小さな変更から始めると成功しやすい
  • プロジェクトごとのコーディング規約やコントリビューションガイドラインがあれば従う
Accenture Japan (有志)

Discussion