Help us understand the problem. What is going on with this article?

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

More than 3 years have 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 の内容で上書きされます。

phanect
フロントエンドパフォーマンス完全に理解した。 記事は特に言及がない限り Creative Commons Attribution 4.0 International でライセンスしています。
https://phanective.org
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away