git reset --hard origin / master是什么意思?


224

我做git pull了一个错误:

下列工作树文件将被合并覆盖...请先移动或删除它们,然后再进行合并。

为了解决这个问题,我做了以下工作:

git fetch
git reset --hard origin/master

现在,当我这样做时git pull,它会显示所有最新信息。我想知道运行这些命令时到底发生了什么。我知道可以git fetch从远程存储库中获取更改,而无需将其合并到本地存储库中。

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

Answers:


414
git reset --hard origin/master

说:丢弃我所有已上演和未上演的更改,忘记我当前本地分支上的所有内容,并使它与完全相同origin/master

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


9
您可以使用取消此移动git reset --hard HEAD@{1}HEAD@{1}因情况而异,因此建议您在中进行搜索git reflog
Nils Werner

2
请注意,@ NilsWerner的撤消移动方法不会还原已暂存和未暂存的更改。那些永远消失了。
迈克尔·安德森

3
仍可以使用找到已暂存的文件git fsck --lost-found,但它们不会附加到其原始文件路径,并且可能难以分类。
CB Bailey 2013年

1
当您(可能是无意中)将更改提交给本地主节点而不是本地分支时,将本地主节点分支重置为原始/主节点通常很有用。只需为您的最新提交创建一个本地分支,然后将您的本地master重置为origin / master。然后,您可以根据需要从master合并或重新建立分支。
Mike Hopper

2
大声笑“提示于”是描述此问题的好方法,因为它
远未达到
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.