Skip to main content

フォークを同期する

リポジトリのフォークを最新に保つために上流リポジトリと同期します。

この機能を使用できるユーザーについて

People with write access for a forked repository can sync the fork to the upstream repository.

Platform navigation

Web UI からフォークのブランチを同期する

  1. GitHub で、アップストリーム リポジトリと同期するフォークされたリポジトリのメイン ページに移動します。

  2. ファイルのリストの上で、 [フォークの同期] ドロップダウン メニューを選んでください。

    フォークのメイン ページのスクリーンショット。 同期アイコンと [フォークの同期] のラベルが付いたドロップダウン メニューが、濃いオレンジ色の枠線で囲まれています。

  3. アップストリーム リポジトリからのコミットの詳細を確認し、 [ブランチを更新] をクリックします。

アップストリーム リポジトリからの変更によって競合が発生した場合、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 でアップストリーム リポジトリを指すリモートを構成する必要があります。 詳しくは、「フォーク用のリモート リポジトリの構成」を参照してください。

  1. [ターミナル][ターミナル][Git Bash] を開きます。

  2. ワーキングディレクトリをローカルプロジェクトに変更します。

  3. 上流リポジトリから、ブランチと各ブランチのコミットをフェッチします。 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
    
  4. フォークのローカルのデフォルト ブランチを確認します。この場合は main を使用します。

    $ git checkout main
    > Switched to branch 'main'
    
  5. 上流のデフォルト ブランチ (この場合は 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(-)
    

    ローカル ブランチに一意のコミットがある場合は、競合の解決が必要になる場合があります。 詳しくは、「マージ競合への対処」を参照してください。

ヒント: フォークの同期では、リポジトリのローカル コピーだけが更新されます。 GitHub.com のフォークを更新するには、変更をプッシュする必要があります。