有没有办法从git重置中恢复未提交的更改到工作目录-hard HEAD?
当前回答
一般来说,您无法返回未提交的更改。
以前的分段更改(git add)应该可以从索引对象中恢复,所以如果你这样做了,使用git fsck——lost-found来定位与它相关的对象。(这将对象写到.git/lost-found/目录;从那里你可以使用git show <filename>来查看每个文件的内容。)
如果没有,答案是:看看你的备份。也许你的编辑器/IDE将临时拷贝存储在/tmp或C:\ temp之类的目录下
git reset HEAD@{1}
这将恢复到前一个HEAD
[1] vim例如,可选地存储持久撤销,eclipse IDE存储本地历史;这样的功能可能会节省你的**
其他回答
你只能恢复你丢失的阶段性(git add)更改。
执行此命令可以方便地恢复
步骤:1进入工程项目根目录,执行该命令
npx git-recover
步骤:2输入恢复目录路径如
/Users/apple/RecoveryDirectory
你会在RecoveryDirectory中丢失文件
如果我丢失了一些零钱,我通常会这么做。
git reflog
git checkout <commit id> // now you are in where you want but you cannot push from detached branch to master
manually copy and paste changes from detached branch to master or working branch
git reset --hard HEAD // if needed
git add ... > git commit ... > git push ...
要将指针移回你之前的提交,但保持你在最近一次提交中所做的更改,checkout git reset -soft dadada
(适用于部分用户的答案)
如果你使用的是(最近的)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)应该可以从索引对象中恢复,所以如果你这样做了,使用git fsck——lost-found来定位与它相关的对象。(这将对象写到.git/lost-found/目录;从那里你可以使用git show <filename>来查看每个文件的内容。)
如果没有,答案是:看看你的备份。也许你的编辑器/IDE将临时拷贝存储在/tmp或C:\ temp之类的目录下
git reset HEAD@{1}
这将恢复到前一个HEAD
[1] vim例如,可选地存储持久撤销,eclipse IDE存储本地历史;这样的功能可能会节省你的**
我不小心运行git重置-对我的回购今天也很难,而今天也有未提交的更改。为了找回它,我运行git fsck——lost-found,它将所有未引用的blobs写入<path To repo>/.git/lost-found/。由于文件未提交,我在<路径repo>/.git/lost-found/的另一个目录中找到了它们。从那里,我可以使用git show <filename>看到未提交的文件,复制出blob,并重命名它们。
注意:只有当你将想要保存的文件添加到索引中时(使用git add .),这才有效。如果文件不在索引中,就会丢失。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别