1. ホーム
  2. ギット

[解決済み】GitHubでのフォーク間のマージについて

2022-04-02 07:20:14

質問

GitHubのリポジトリをフォークしました。そして、いくつかの変更をフォークにプッシュしました。その後、元のリポジトリが私の変更と他のいくつかの変更をマージしました。今度は、私が見逃している変更をマージしたいと思います。単純な pull と push を試しましたが、これでは私のコミットが二重になってしまいます。これを行うための最良の方法は何でしょうか?

解決方法は?

おそらく、各リポジトリに "リモート" があることでしょう。一方のリモートからプルし、他方のリモートにプッシュする必要があります。

元々フォークからクローンしたのであれば、そのリモートは "origin" と呼ばれるでしょう。まだ追加していない場合は、他のリポジトリを別のリモートとして追加する必要があります。

git remote add <shortname> git://github.com/<ownerName>/repo.git

このように設定すると、確かに (github はデフォルトブランチを master から main 必要に応じて変更してください。)

git pull <shortname> master
git push origin

覚えておいてください。 git pull を行うマクロに他なりません。 git fetchgit merge という順番になります。もう一方のリポジトリからコミットの一覧を取得し、そのブランチを自分のツリーにマージすればいいのです。マージすれば、両方のブランチのコミットに対して正しい処理が行われるはずです。

GitHubは、その永遠の素晴らしさゆえに、もちろん近道を提供してくれます。リポジトリのフォークには "fast-forward" というボタンがあり、これを使えば完全に向こうのリポジトリにマージされてしまった場合でも、自分のフォークに追いつくことができるのです。