フォークしたリポジトリとオリジナルリポジトリの変更を同期し、マージする手順書
この記事では、フォークしたリポジトリをオリジナルリポジトリと同期させ、その後マージを行う手順を詳しく説明します。以下の手順に従って、フォーク先とローカルリポジトリを最新の状態に保ち、スムーズに開発を進めましょう。
前提条件
- GitHubアカウントを持っていること
- フォークしたリポジトリをローカルにクローンしていること
- Gitがインストールされていること
手順1: フォークしたリポジトリをオリジナルと同期する
1. GitHubのウェブUIで「Sync fork」ボタンを使用する
- GitHubにログインし、フォークしたリポジトリのページに移動します。
- リポジトリのトップページにある「Sync fork」ボタンをクリックします。
- このボタンはリポジトリの上部に表示されています。
- 「Sync fork」をクリックすると、フォーク先のリポジトリがオリジナルリポジトリ(upstream)の最新の変更と自動的に同期されます。
2. コマンドラインを使用してフォークを同期する(オプション)
もしウェブUIを使用せずにコマンドラインで同期したい場合は、以下の手順を実行します。
-
ローカルリポジトリに移動します。
cd /path/to/your/local/repo
-
オリジナルリポジトリをupstreamとして追加します(まだ追加していない場合)。
git remote add upstream https://github.com/original-owner/original-repo.git
-
upstreamから最新の変更をフェッチします。
git fetch upstream
-
mainブランチにチェックアウトします。
git checkout main
-
upstreamのmainブランチをマージします。
git merge upstream/main
-
ローカルのmainブランチをフォーク先(origin)にプッシュします。
git push origin main
手順2: ローカルリポジトリに最新の変更をプルする
フォークをGitHub上で同期した後、ローカルリポジトリにもその変更を反映させます。
-
ローカルリポジトリに移動します。
cd /path/to/your/local/repo
-
mainブランチにチェックアウトします。
git checkout main
-
最新の変更をプルします。
git pull origin main
- これにより、GitHub上で同期されたフォーク先の最新の変更がローカル環境にも反映されます。
手順3: 新しいブランチを作成して作業する
最新の状態に同期されたmainブランチから新しいブランチを作成し、作業を進めます。
-
新しいブランチを作成してチェックアウトします。
git checkout -b feature/new-feature
-
必要な変更を行い、コミットします。
git add . git commit -m "Add new feature"
-
新しいブランチをフォーク先にプッシュします。
git push origin feature/new-feature
手順4: プルリクエストを作成する
フォーク先のリポジトリからオリジナルリポジトリに対してプルリクエスト(PR)を作成します。
- GitHubのウェブサイトに移動し、フォークしたリポジトリのページを開きます。
- 「Compare & pull request」ボタンをクリックします。
- PRのタイトルと説明を記入し、「Create pull request」ボタンをクリックしてPRを作成します。
手順5: マージの確認と解決(コンフリクトが発生した場合)
PRが承認され、オリジナルリポジトリにマージされると、フォーク先とローカルリポジトリは最新の状態になります。ただし、複数人で作業している場合や頻繁にオリジナルリポジトリが更新される場合、マージコンフリクトが発生する可能性があります。その場合の対処法は以下の通りです。
-
ローカルリポジトリでmainブランチにチェックアウトします。
git checkout main
-
upstreamのmainブランチをフェッチしてマージします。
git fetch upstream git merge upstream/main
-
コンフリクトが発生したファイルを修正します。
- Gitはコンフリクト箇所を示すマーカー(
<<<<<<<
,=======
,>>>>>>>
)を挿入しますので、適切に修正します。
- Gitはコンフリクト箇所を示すマーカー(
-
修正後、変更をステージしてコミットします。
git add . git commit -m "Resolve merge conflicts"
-
ローカルのmainブランチをフォーク先にプッシュします。
git push origin main
手順6: フォークとローカルリポジトリを最新に保つ利点
- 最新の変更を取り込むことで、コードの一貫性を保つことができる。
- コンフリクトの発生を最小限に抑えることができる。
- 他のコラボレーターとの作業をスムーズに統合できる。
まとめ
フォークしたリポジトリとオリジナルリポジトリを定期的に同期させることで、最新の変更を取り込み、効率的に開発を進めることができます。GitHubの「Sync fork」ボタンやGitコマンドを活用し、ローカルリポジトリとの同期を保ちながら、円滑なコラボレーションを実現しましょう。
参考コマンド一覧
# リポジトリのクローン
git clone https://github.com/your-username/forked-repo.git
# リモートの確認
git remote -v
# upstreamの追加
git remote add upstream https://github.com/original-owner/original-repo.git
# upstreamからフェッチ
git fetch upstream
# mainブランチにチェックアウト
git checkout main
# upstreamのmainをマージ
git merge upstream/main
# mainをプッシュ
git push origin main
# 新しいブランチの作成
git checkout -b feature/new-feature
# 変更をステージング
git add .
# コミット
git commit -m "Add new feature"
# ブランチをプッシュ
git push origin feature/new-feature
# PR作成後のマージコンフリクト解決
git checkout main
git fetch upstream
git merge upstream/main
# コンフリクトを修正
git add .
git commit -m "Resolve merge conflicts"
git push origin main
これらの手順とコマンドを活用して、フォークしたリポジトリを効果的に管理し、オリジナルリポジトリとの同期を保ちながら開発を進めてください。