321

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

では、競合について気にするのではなく、GitHubにあるバージョンでGitを強制的に上書きする方法はありますか?

4

2 に答える 2

543

ローカルで行ったコミットを本当に破棄したい場合、つまり、二度と履歴に残したくない場合は、プルする方法を尋ねているわけではありません。プルとはマージを意味し、マージする必要はありません。あなたがする必要があるのはこれだけです:

# 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
于 2011-01-24T21:26:38.010 に答える
157

nvmが指す重複リンクからの回答を使用できます。

または、変更を使用して競合を解決できます(ただし、リモートバージョンと競合しない場合は、変更の一部が保持される可能性があります)。

git pull -s recursive -X theirs
于 2011-01-24T18:03:08.483 に答える