Web UI からフォークのブランチを同期する
-
GitHub で、アップストリーム リポジトリと同期するフォークされたリポジトリのメイン ページに移動します。
-
ファイルのリストの上で、 [フォークの同期] ドロップダウン メニューを選んでください。
-
アップストリーム リポジトリからのコミットの詳細を確認し、 [ブランチを更新] をクリックします。
アップストリーム リポジトリからの変更によって競合が発生した場合、GitHub は競合を解決するためのプルリクエストを作成するように求められます。
GitHub CLI を使ってフォークのブランチを同期する
GitHub CLI は、コンピューターのコマンド ラインから GitHub を使用するためのオープン ソース ツールです。 コマンドラインから作業しているときは、GitHub CLI を使用して時間を節約し、コンテキストの切り替えを回避できます。GitHub CLI の詳細については、「GitHub CLI について」を参照してください。
親からリモート フォークを更新するには、gh repo sync -b BRANCH-NAME
サブコマンドを使って、フォークとブランチの名前を引数として指定します。
gh repo sync owner/cli-fork -b BRANCH-NAME
アップストリーム リポジトリからの変更によって競合が発生した場合、GitHub CLI では同期できません。宛先ブランチを上書きするように --force
フラグを設定できます。
コマンド ラインからフォークのブランチを同期する
フォークをアップストリーム リポジトリと同期する前に、Git でアップストリーム リポジトリを指すリモートを構成する必要があります。 詳しくは、「フォーク用のリモート リポジトリの構成」をご覧ください。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
ワーキングディレクトリをローカルプロジェクトに変更します。
-
上流リポジトリから、ブランチと各ブランチのコミットをフェッチします。
BRANCH-NAME
へのコミットは、ローカル ブランチupstream/BRANCH-NAME
に格納されます。$ git fetch upstream > remote: Counting objects: 75, done. > remote: Compressing objects: 100% (53/53), done. > remote: Total 62 (delta 27), reused 44 (delta 9) > Unpacking objects: 100% (62/62), done. > From https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY > * [new branch] main -> upstream/main
-
フォークのローカルのデフォルト ブランチを確認します。この場合は
main
を使用します。$ git checkout main > Switched to branch 'main'
-
上流のデフォルト ブランチ (この場合は
upstream/main
) からの変更をローカルのデフォルト ブランチにマージします。 これにより、ローカルの変更を失うことなく、フォークのデフォルトブランチが上流リポジトリと同期されます。$ git merge upstream/main > Updating a422352..5fdff0f > Fast-forward > README | 9 ------- > README.md | 7 ++++++ > 2 files changed, 7 insertions(+), 9 deletions(-) > delete mode 100644 README > create mode 100644 README.md
ローカル ブランチに一意のコミットがなかった場合、Git は早送りを実行します。 詳細については、Git ドキュメントの「基本的な分岐とマージ」をご覧ください。
$ git merge upstream/main > Updating 34e91da..16c56ad > Fast-forward > README.md | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-)
ローカル ブランチに一意のコミットがある場合は、競合の解決が必要になる場合があります。 詳しくは、「マージ競合への対処」をご覧ください。
Tip
フォークの同期では、リポジトリのローカル コピーだけが更新されます。 GitHub.com のフォークを更新するには、変更をプッシュする必要があります。