GitHubリポジトリからサーバーにコードをプルしようとしていますが、マージの競合が原因でプルが失敗し続けます。最後のプル以降にローカルサーバーで発生した可能性のある変更を保持したくありません。
では、競合について気にするのではなく、GitHubにあるバージョンでGitを強制的に上書きする方法はありますか?
ローカルで行ったコミットを本当に破棄したい場合、つまり、二度と履歴に残したくない場合は、プルする方法を尋ねているわけではありません。プルとはマージを意味し、マージする必要はありません。あなたがする必要があるのはこれだけです:
# fetch from the default remote, origin
git fetch
# reset your current branch (master) to origin's master
git reset --hard origin/master
個人的には、最初に現在の HEAD にバックアップ ブランチを作成することをお勧めします。そうすれば、これが悪い考えだと気づいたとしても、それを見失うことはありません。
一方、これらのコミットを保持し、オリジンとマージしたかのように見せ、マージでオリジンからのバージョンのみを保持する場合は、ours
マージ戦略を使用できます。
# 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
nvmが指す重複リンクからの回答を使用できます。
または、変更を使用して競合を解決できます(ただし、リモートバージョンと競合しない場合は、変更の一部が保持される可能性があります)。
git pull -s recursive -X theirs