Git reset --hard 没有按预期工作

Git reset --hard not working as expected

我正在尝试检查存储库的历史记录。我停在了我想 return 存储库返回到特定提交的位置。我搜索了,我做了

git reset --hard 12345

我收到消息说 HEAD 现在位于 12345。我打开文件夹查看我想查看的文件,但它并没有改变!

我想回到 2009 年那个文件第一次创建的时候。但是该文件是新版本(在 2010 年编辑后)。

我检查了工作目录,但那里什么也没有。我也运行

git clean -f -d

但没有任何改变。

我不知道我现在该怎么办。我想回到过去看看文件的样子,但我想回到整个存储库。

公平地说,我不明白你的回购在你做了之后发生了什么

git reset --hard 12345

需要强调的是,平时应该避免使用"git reset --hard"命令。风险是丢失您拥有的任何未提交的更改,并且最终会出现悬而未决的提交。如果您想丢弃在提交 12345 之后所做的所有提交,您将真正使用该命令。我邀请您阅读此 thread about git reset --hard

在你的情况下,我实际上会创建一个指向提交 12345 的临时分支 "temp_branch"。 该命令将是

git checkout -b temp_branch 12345

这会将 repo 切换到新分支 "temp_branch",其 HEAD 将为 12345。创建新分支不是强制性的,但我发现如果我需要从该提交中进行更改,这很方便。

如果您只想查看提交时的内容,请不要使用重置。 reset 用于移动分支,这样你可能会遇到麻烦。看看吧,git checkout 12345。然后你可以再次使用结账回到你原来的地方,git checkout master(或任何分支)。

至于你的文件没有被更改,你确定它在那个提交中有所不同吗?检查 git diff 12345 branch_name -- filename.

对我来说,我没有 stage 个文件,这就是 git reset --hard 对我不起作用的原因
我只是 运行 下面的命令

git add . => to stage all files (don't ignore .)

git reset --hard => to reset all changes