Git硬重置并不会还原本地文件。

3
我有一个特性分支,我们称之为 feature/JIRA-1000。 在这个分支上,我提交了一条消息为“it works.”的 commit。
接着,我对代码进行了重构,并将更改作为“Refactoring”提交。然而,后来我意识到这些更改应该作为另一个任务(JIRA 2000)的一部分,在另一个分支上完成。于是我在 JIRA 上创建了一个新分支 feature/JIRA-2000,基于 feature/JIRA-1000。这个新分支包含了 “It works” 和 “Refactoring” 的 commit。
然后,我想从 feature/JIRA-1000 分支中删除 “Refactoring” 的 commit。因此,在 Gitkraken 中,我右键点击了 “It works” 的 commit,选择了 “Reset -> hard”。我也尝试过在 Git Bash 中执行上述操作。
$ git checkout feature/JIRA-1000
Already on 'feature/JIRA-1000'
Your branch is up to date with 'origin/feature/JIRA-1000'.

$ git reset --hard f9ef772b188ae359a77804b63a79aa542fd44e6b
HEAD is now at f9ef772 SERDOC-1000 It works

$ git push -f
Everything up-to-date

但是现在出现了问题:我的本地文件没有改变。

我做错了什么?

Gitkraken可能弄错了些什么,因为我相信当我第一次运行命令时有一些未暂存的更改,并且我可以看到一个提交条目,上面写着:

Merge remote-tracking branch 'origin/feature/JIRA-1000' into feature/JIRA-1000

我在分支历史记录的顶部。但无论如何,JIRA-2000现在应该是这样的。我只是不能将JIRA-1000恢复到我想要的状态。

编辑: 我不小心重复了对JIRA-2000分支(我不想重置的新分支)的硬重置。在这种情况下,硬重置确实重置了我的本地更改。(幸运的是,我能够通过再次硬重置到“重构”提交来撤消这个操作)。那么也许我的JIRA-1000分支出了点问题?


我重置为 "It works",请查看上面的控制台输出。 - TravelingFox
命令行解决方案很好。 - TravelingFox
你推送了你的更改吗?因为看起来 Jira1000 的远程版本没有被还原,然后 git kraken 自动地将你快速转回到原来的位置。在重置之后立即尝试使用 git push -f 命令。 - Mad Physicist
1
没关系。看来@EdsonHoracioJunior是对的。我的IDE没有更新。抱歉。当我在另一个分支上时,它似乎运行得很好,这太奇怪了。 - TravelingFox
1
@Edson,请考虑发布完整的答案。这对未来读者可能很有价值。 - Mad Physicist
显示剩余6条评论
1个回答

0

你做得一切都是对的。

你确定你的IDE正在使用正确的存储库吗?也许你在两个不同的文件夹中有相同的存储库,而你的IDE正在使用你没有执行这些命令的存储库。

你能否通过终端检查代码更改,以确保它确实没有更改?


1
确实是我的错误。由于某种原因,Visual Studio没有要求我重新加载解决方案,而且它仍然显示所有文件都完好无损。我盲目地信任了Visual Studio。 - TravelingFox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接