312

我做了一个git pull并得到了一个错误:

以下工作树文件将被合并覆盖... 请在合并之前移动或删除它们。

为了解决这个问题,我做了以下事情:

git fetch
git reset --hard origin/master

现在,当我这样做时git pull,它会说一切都是最新的。我想知道当我运行这些命令时到底发生了什么。我知道git fetch从远程存储库中获取更改而不将它们合并到我的本地存储库中。

是什么意思git reset --hard origin/master?它是如何工作的?

4

2 回答 2

592
git reset --hard origin/master

说:扔掉我所有分阶段和非分阶段的更改,忘记我当前本地分支上的所有内容,并使其与origin/master.

在运行命令之前,您可能想问这个问题。通过使用与“硬重置”相同的词来暗示破坏性。

于 2013-03-15T12:17:04.137 回答
5

在较新版本的 git (2.23+) 中,您可以使用:

git switch -C master origin/master

-C与 相同--force-create。相关参考文档

于 2020-07-16T11:43:03.513 回答