git重置的含义是什么——硬源代码/主代码?

git重置的含义是什么——硬源代码/主代码?,git,version-control,git-reset,Git,Version Control,Git Reset,我执行了一次git pull操作,但出现了一个错误: 以下工作树文件将被合并覆盖。。。 请先移动或删除它们,然后才能合并 为了解决这个问题,我做了以下工作: git fetch git reset --hard origin/master 现在,当我执行git pull时,它会显示所有内容都是最新的。我想知道当我运行这些命令时会发生什么。我知道,git fetch从远程repo获取更改,而不将它们合并到本地repo中 git重置--hard origin/master的含义是什么?它是如何工作

我执行了一次git pull操作,但出现了一个错误:

以下工作树文件将被合并覆盖。。。 请先移动或删除它们,然后才能合并

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

git fetch
git reset --hard origin/master
现在,当我执行git pull时,它会显示所有内容都是最新的。我想知道当我运行这些命令时会发生什么。我知道,
git fetch
从远程repo获取更改,而不将它们合并到本地repo中

git重置--hard origin/master的含义是什么?它是如何工作的

git reset --hard origin/master
说明:扔掉我所有的阶段性和非阶段性更改,忘记当前本地分支上的所有内容,并使其与
origin/master
完全相同

在运行命令之前,您可能想问这个问题。通过使用与“硬重置”相同的词语来暗示破坏性。在较新版本的git(2.23+)中,您可以使用:

git switch -C master origin/master

-C
--force create
相同。相关的

您可以使用
git reset--hard HEAD@{1}
撤消此移动
HEAD@{1}
因情况而异,因此建议您在
git reflog
中搜索它。请注意@NilsWerner撤消移动的方法不会恢复分阶段和未分阶段的更改。这些文件已经永远消失了。仍然可以使用git fsck--lost found找到暂存文件,但它们不会附加到原始文件路径,并且可能很难进行排序。如果您有(可能是意外地)将本地主分支重置为origin/master分支,通常会很有用已将更改提交到本地主机而不是本地分支。只需为最新提交创建一个本地分支,然后将本地主机重置为origin/master。然后,您可以根据需要从master合并或重新设置分支的基础。lol“hinted at”是描述这一点的一种很好的方式,因为它远不是显而易见或明确的