Githubでプロジェクトをforkしました。変更を加え、プルリクエストを送信しました。オーナーは私のフォークをメインプロジェクトにマージし、その後いくつかの変更を加えました。したがって、今のところ、私のフォークはメインプロジェクトで更新されていません。私のプルリクエストをマージした後、彼が行った変更がありません。メインプロジェクトでフォークを更新するにはどうすればよいですか? Webインターフェイスでそれを行う方法はありますか?
ありがとう
設計上、プロジェクトをフォークすると、元のリポジトリが変更されても更新されない別のリポジトリが作成されます。ただし、git
を使用すると、手動で簡単に更新できます。
3番目のリポジトリの助けが必要です(ローカルコピーで十分です)。 3つのリポジトリがあります。
git clone [email protected]:your-username/projectname.git
を使用してForkを複製して作成し、全員がブランチmaster
を使用していると想定します。現在「Origin」と「Local」が同じ状態にあり、「Upstream」が1つ以上のコミット(マージとその後の変更)より進んでいると想定します。
最初に上流プロジェクトを Gitリモート として追加します。
git remote add upstream https://github.com/upstream-username/projectname.git
次に、fetchをプルし、次にmergeを自動的に変更します。リモートの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
私は this answer を見つけて、元の回答を補足します。これは、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
これが行わないことは、上流から削除された分岐をフォークから削除することです。特にフォークにブランチを作成している場合は、これを自動化する方法はありません。