git重置头--硬删除本地文件

问题描述 投票:0回答:2

我不知道从哪里开始。我是

git
的初学者,正在努力了解情况。

今天我正在做一个项目,但没有承诺。我的最后一次提交是在昨天。我打开我的电脑并决定在继续之前先提交我的工作,因为我在两台不同的电脑上工作。

提交中途卡住了。从文档中我看到

reset head --hard
可以解决这些问题。 (事后看来,这是一个糟糕的主意。)当我进行重置时,它返回到最后一个头,并且我当前的更改未提交到 GitHub。我丢失了几个新文件以及对现有文件所做的一些工作。

顺便说一句,在头重置之后提交实际上是成功的,并且它向 GitHub 发送了带有回滚文件的提交。

我尝试了一些事情

git fsck --lost-found

它返回了我跑过的 1 个悬空树块

git show 8474d5166d62918b3318fe1275029c10049d5b8b

返回了这个

admin.mydomain.ca/
assets/
cx.domain.ca/
index.html

我检查了我的仓库下的垃圾箱和.git文件夹,但没有结果。

我得到的最后一件事是来自原始提交尝试的文件,该文件挂起并被我的

git reset --hard
击中。这是丢失/回滚的原始正确文件。

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch main
# Your branch is ahead of 'origin/main' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   modified:   admin.mydomain.ca/assets/css/dashboard.css
#   new file:   admin.mydomain.ca/assets/js/dashboard.js
#   modified:   admin.mydomain.ca/assets/php/login.php
#   new file:   admin.mydomain.ca/assets/php/logout.php
#   new file:   admin.mydomain.ca/customers.php
#   modified:   admin.mydomain.ca/index.php
#

尝试过

git reflog

93d3f70 (HEAD -> main) HEAD@{0}: reset: moving to HEAD^
bff6257 HEAD@{1}: reset: moving to HEAD^
600805b HEAD@{2}: reset: moving to HEAD^
5d31c32 (test) HEAD@{3}: reset: moving to HEAD
5d31c32 (test) HEAD@{4}: reset: moving to HEAD
5d31c32 (test) HEAD@{5}: reset: moving to HEAD
5d31c32 (test) HEAD@{6}: reset: moving to HEAD
5d31c32 (test) HEAD@{7}: reset: moving to HEAD^
cd5ba09 (origin/main, origin/HEAD) HEAD@{8}: reset: moving to HEAD
cd5ba09 (origin/main, origin/HEAD) HEAD@{9}: reset: moving to cd5b
cd5ba09 (origin/main, origin/HEAD) HEAD@{10}: reset: moving to cd5ba09
cd5ba09 (origin/main, origin/HEAD) HEAD@{11}: checkout: moving from test to main
5d31c32 (test) HEAD@{12}: reset: moving to HEAD~
cd5ba09 (origin/main, origin/HEAD) HEAD@{13}: checkout: moving from main to test
cd5ba09 (origin/main, origin/HEAD) HEAD@{14}: reset: moving to HEAD
cd5ba09 (origin/main, origin/HEAD) HEAD@{15}: commit: Bug fix, dashboard update
5d31c32 (test) HEAD@{16}: commit: Back to normal
600805b HEAD@{17}: commit: testing
bff6257 HEAD@{18}: clone: from https://github.com/myuser/mydomain.git

我用移动头四处乱转,看看是否能找到任何东西,但什么也没有。 cd5ba09 是带有回滚文件的最近提交。

git show
中没有任何内容作为丢失的文件出现

git git-commit git-reflog git-fsck
2个回答
0
投票

我不确定是否应该发布答案,但经过一段时间的摆弄并尝试不移动太多东西后我找到了解决方案。我什至运行了磁盘钻取来恢复已删除的文件。

我的解决方案一直是 VSCode。从资源管理器视图中,我单击了时间轴 -> 更多操作 -> 本地历史记录,并且能够搜索并找到我们丢失/回滚的文件。

VSCode 是这里的救星,我不知道它正在运行后台服务来在每次保存时备份本地文件。

我可能是一个 Git 傻瓜,但我确实会按 CTRL+S 执行每一行代码:)


-1
投票

可以在硬重置之前将分支重置为之前的提交。

git reset --hard cd5ba09 
© www.soinside.com 2019 - 2024. All rights reserved.