321

我正在尝试将代码从我的 GitHub 存储库中提取到我的服务器上,但由于合并冲突,拉取一直失败。我不想保留自上次拉取以来本地服务器上可能发生的任何更改。

那么有没有一种方法可以强制 Git 用 GitHub 中的任何版本覆盖,而不是因为冲突而困扰我?

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 回答