有没有办法从git重置中恢复未提交的更改到工作目录-hard HEAD?


当前回答

IntelliJ有一个临时文件夹,可以通过history命令访问:

在导航窗格中选择要还原文件的文件夹 双击Shift键(Shift - Shift) 在弹出的输入框中输入本地历史记录并按Enter 选择显示历史记录 现在您可以恢复到所需的版本。

其他回答

对于那些丢失了未分期和未提交更改的VSCode用户

这只会工作,如果你没有广泛编辑您的文件后再次重置。

尝试在VSCode中撤销文件更改

我确实进行了重置——当我的利益相关者决定在我构建功能时重新定义功能时,这很困难。一小时后,同样的利益相关者改变了主意。

我休息了一会儿又回来了。当我看到他们改变主意后,我决定尝试撤销我正在处理的文件,它成功了!我设法拿回了所有的作业。

根据定义,git reset -hard会丢弃未提交的更改,git无法恢复它们(你的备份系统可能会有帮助,但不是git)。

实际上,很少有git重置的情况——困难是个好主意。在大多数情况下,有一个更安全的命令来做同样的事情:

If you want to throw away your uncommitted changes, then use git stash. It will keep a backup of these changes, which will expire after some time if you run git gc. If you're 99.9% sure you'll never need these changes back, then git stash is still your friend for the 0.1% case. If you're 100% sure, then git stash is still your friend because these 100% have a measurement error ;-). If you want to move your HEAD and the tip of the current branch in history, then git reset --keep is your friend. It will do the same thing as git reset --hard, but will not discard your local changes. If you want to do both, then git stash && git reset --keep is your friend.

教你的手指不要使用git重置——很难,总有一天会有回报的。

(适用于部分用户的答案)

如果你使用的是(最近的)macOS,即使你没有使用时间机器磁盘,操作系统也会每小时保存一次备份,称为 当地的快照。

进入时间机器,导航到你丢失的文件。操作系统会问你:

The location to which you're restoring "file.ext" already contains an
item with the same name. Do you want to replace it with the one you're
restoring?

你应该能够恢复你丢失的文件。

你只能恢复你丢失的阶段性(git add)更改。

执行此命令可以方便地恢复

步骤:1进入工程项目根目录,执行该命令

npx git-recover

步骤:2输入恢复目录路径如

/Users/apple/RecoveryDirectory

你会在RecoveryDirectory中丢失文件

嗯,据我所知,最好的解决方案是使用IDE特性。

选择丢失文件的存储库,并右键单击它 在菜单>中查找本地历史显示历史 现在检查版本版本,你所有的文件都存在>,选择它,然后点击恢复。 这就是最可能的情况。

注意:上述解决方案适用于在任何IDE(如intelliJ)中进行更改或导入存储库。