Git重置 – 硬没有按预期工作

Git reset --hard not working as expected

我正在尝试检查存储库的历史记录。我停在一个点上,在这个点上我想将存储库返回到一个特定的提交。我搜索过了

1
git reset --hard 12345

我收到消息说head现在是12345。我打开文件夹查看我想查看的文件,但没有更改!

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

我查了工作目录,但没有查到。我也跑了

1
git clean -f -d

但没有改变。

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


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

1
git reset --hard 12345

应该强调的是,您通常应该避免使用"git reset--hard"命令。风险是丢失您所拥有的任何未承诺的更改,并最终导致悬而未决的承诺。如果您想放弃提交12345之后所做的所有提交,那么您真的需要使用这个命令。我邀请你读一下关于Git重置的文章——硬的

在您的例子中,我实际上已经创建了一个临时分支"temp_branch",指向commit 12345。命令是

1
git checkout -b temp_branch 12345

这将把回购交易切换到新的分行"临时分行",其负责人将是12345。创建一个新的分支并不是强制性的,但是如果我需要从这个承诺中进行更改,我发现这很方便。


如果您只想在提交时查看内容,那么不要使用重置。重置是为了移动树枝,这样你就会陷入麻烦。你看看,git checkout 12345。然后,您可以再次使用checkout返回您所在的位置,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