Githubでプロジェクトを分岐しました。変更を加えてプルリクエストを送信しました。所有者は私のフォークをメインプロジェクトにマージし、その後いくつかの変更を加えました。そのため、今のところ、私のプロジェクトはメインプロジェクトで更新されていません。プルリクエストをマージした後、彼が行った変更を逃しました。メインプロジェクトでフォークを更新するにはどうすればよいですか?Webインターフェイスでそれを行う方法はありますか?
ありがとう
Githubでプロジェクトを分岐しました。変更を加えてプルリクエストを送信しました。所有者は私のフォークをメインプロジェクトにマージし、その後いくつかの変更を加えました。そのため、今のところ、私のプロジェクトはメインプロジェクトで更新されていません。プルリクエストをマージした後、彼が行った変更を逃しました。メインプロジェクトでフォークを更新するにはどうすればよいですか?Webインターフェイスでそれを行う方法はありますか?
ありがとう
回答:
設計上、プロジェクトをフォークすると、元のリポジトリが変更されても更新されない別個のリポジトリが作成されます。ただし、git
手動で簡単に更新できます。
3番目のリポジトリの助けが必要です(ローカルコピーで十分です)。3つのリポジトリがあります。
git clone git@github.com:your-username/projectname.git
、誰もがbranch を使用していると仮定しますmaster
。現在、「Origin」と「Local」が同じ状態にあり、「Upstream」が1つ以上のコミット(マージとその後の変更)の先にあると仮定します。
まず、アップストリームプロジェクトをGitリモートとして追加します。
git remote add upstream https://github.com/upstream-username/projectname.git
次に、リモートのブランチからローカルリポジトリの現在の()ブランチに変更をプル(フェッチしてから自動的にマージ)master
しますmaster
:
git pull upstream master
これで、ローカルリポジトリがと同期しましたupstream
。最後に、ローカルリポジトリをGithubフォークにプッシュします。
git push origin master
これですべてが同期されました。
リモートを追加し(GitHubヘルプを参照)、その新しいリモートからプルする必要があります。
git remote add mainProject https://github.com/user/mainProject
git pull mainProject master
見つけた この回答は、1つのブランチ(マスター)の同期のみを扱うため、元の回答を補完するものである。また、分岐以降、ブランチがアップストリームで作成されている場合、分岐でブランチを作成するのは少し複雑です。
簡単な答えは、上流のリポジトリのすべてのブランチでフォークを更新するには、このコマンドを実行することです。
for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done
これがしないのは、上流から削除された分岐を分岐から削除することです。特にフォークでブランチを作成した場合は、それを自動化する方法はありません。