Skip to main content

フォークを同期する

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

Who can use this feature

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

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

  1. GitHub Enterprise Server で、アップストリーム リポジトリと同期するフォークされたリポジトリのメイン ページに移動します。
  2. [アップストリームのフェッチ] ドロップダウンを選択します。 [アップストリームのフェッチ] ドロップダウン
  3. アップストリーム リポジトリからのコミットの詳細を確認し、 [フェッチしてマージ] をクリックします。 [フェッチしてマージ] ボタン

アップストリーム リポジトリからの変更によって競合が発生した場合、GitHub は競合を解決するためのプルリクエストを作成するように求められます。

GitHub CLI を使ってフォークのブランチを同期する

GitHub CLI は、コンピューターのコマンド ラインから GitHub を使用するためのオープン ソース ツールです。 コマンドラインから作業しているときは、GitHub CLI を使用して時間を節約し、コンテキストの切り替えを回避できます。GitHub CLI の詳細については、「GitHub CLI について」を参照してください。

親からリモート フォークを更新するには、gh repo sync -b BRANCHNAME サブコマンドを使って、フォークとブランチの名前を引数として指定します。

$ gh repo sync owner/cli-fork -b BRANCHNAME

アップストリーム リポジトリからの変更によって競合が発生した場合、GitHub CLI では同期できません。宛先ブランチを上書きするように -force フラグを設定できます。

コマンド ラインからフォークのブランチを同期する

フォークをアップストリーム リポジトリと同期する前に、Git でアップストリーム リポジトリを指すリモートを構成する必要があります。

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

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

  3. 上流リポジトリから、ブランチと各ブランチのコミットをフェッチします。 BRANCHNAME へのコミットは、ローカル ブランチ upstream/BRANCHNAME に格納されます。

    $ 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://ホスト名/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(-)

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

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