元のリポジトリにリモートを追加し、そこからフェッチし、プルされたものと一致するようにブランチをリセットしてから、ブランチをフォークに強制的にプッシュすることで、フォークを修正できます。
フォークされたリポジトリがoriginで表されていると仮定すると、ここに、マスターが唯一のブランチである例があります。
git remote add upstream http://github.com/original.git
git fetch upstream
git reset --hard upstream/master
git push -f origin master
これで、マスターは両方のリポジトリで同じ場所に配置されます。マージを行うときは、自分の側に何も存在しないために参照を前方に移動するか(早送りマージと呼ばれます)、両方に変更があるために新しいコミットを行います。コミットを破棄したい場合は、ここでリセットが答えです。マージではありません。
最初のリポジトリにある場所にリセットしたい他のブランチがある場合は、次のコマンドでチェックアウトせずに行うことができます。
git push -f . upstream/feature1:feature1
git push -f origin feature1
the .
says push within the same repo. It's a clever way to move a branch pointer without having to checkout the branch. The colon syntax in push means <source>:<destination>
. If :<destination>
is omitted, it implies the same name which is why you don't often see the syntax with push examples. A more common example is when you push a local branch to a remote one that has a different name: git push origin myexperiment:dev
would update the dev branch on the remote to what myexperiment points to.