Edited at

Git でブランチを上書きする

More than 1 year has passed since last update.


TL;DR

現在のブランチを、あるブランチで上書きするには

$ git reset --hard 上書き元ブランチ


詳細

例えばフォークした個人用リポジトリー (例 github.com/phanect/some-repo) の master を、フォーク元 (例: github.com/growaspeople/some-repo) の master で上書きしたい (全く同じ状態にしたい) 時。

普段は git rebase を使って以下のようにやっていました。

$ git remote add upstream git@github.com:growaspeople/some-repo.git

$ git fetch upstream
$ git rebase upstream/master

しかし、時としてコンフリクトが発生してしまうことがあります。この場合、余計な merge コミットが入ってしまいます。

$ git rebase upstream/master

First, rewinding head to replay your work on top of it...

...

CONFLICT (content): Merge conflict in data/app_mobile/Controller/EntryController.php
Failed to merge in the changes.
Patch failed at 0002 Throw exception object so not only traces are logged
The copy of the patch that failed is found in:
/path/to/some-repo/.git/rebase-apply/patch

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

そういった際には、

$ git remote add upstream git@github.com:growaspeople/some-repo.git

$ git fetch upstream
$ git reset --hard upstream/master

としてあげると、現在のブランチの内容は完全に破棄され、upstream/master の内容で上書きされます。