1. ホーム
  2. ギット

[解決済み】Gitリモートからのプル時に、リモートの変更を使用してコンフリクトを解決する。

2022-03-28 19:45:14

質問

GitHub リポジトリから自分のサーバーにコードをプルしようとしていますが、マージの競合のためにプルが何度も失敗します。最後のプル以降にローカルサーバーで発生した可能性のある変更を保持したくありません。

では、コンフリクトで悩むのではなく、GitHubにあるバージョンで上書きするようにGitに強制する方法はあるのでしょうか?

解決方法は?

本当に捨てたいのであれば コミット ローカルで作ったものを二度と履歴に残さないようにするには、pullの方法を聞いているのではありません。pullはマージを意味し、マージする必要はありません。必要なのはこれだけです。

# fetch from the default remote, origin
git fetch
# reset your current branch (master) to origin's master
git reset --hard origin/master

個人的には、まず現在の HEAD にバックアップブランチを作っておくことをお勧めします。そうすれば、もしこれが悪い考えだったと気づいたときに、それを見失わずにすみます。

一方、これらのコミットを残し、あたかも origin とマージしたかのように見せかけ、オリジンからのバージョンだけをマージさせたい場合は ours merge 戦略。

# fetch from the default remote, origin
git fetch
# create a branch at your current master
git branch old-master
# reset to origin's master
git reset --hard origin/master
# merge your old master, keeping "our" (origin/master's) content
git merge -s ours old-master