我不小心删除了我的源代码的整个目录...用一个很好的rm -r。我知道,真的很糟糕;但幸运的是,我在包含目录中有一个git repo,因此,git有一个巨大的列表,其中包含了已删除文件的unstaged更改。
"deleted: src/caronmonitor/server.py"
我该如何找回这些文件?网上到处都有建议:
git checkout file
或
git revert <commit>
但据我所知,这会将文件恢复到上次提交时的状态。我不想回到上次提交,而是回到删除操作之前的状态。我可以在gitk中查看删除前的文件;因此这是可能的。
6条答案
按热度按时间uemypmqf1#
是的,您应该执行
git checkout filename
如果你有多个文件,并且想把它们全部还原回来,可以使用git根目录下的
git checkout .
命令。checkout 将文件恢复为添加/提交的最后版本;如果一个文件还没有被添加或提交,那么它将丢失.
例如:
j0pj023g2#
不,GIT不会做任何魔法。如果你没有暂存或提交你的更改,那么这些更改就会消失。你可以看到删除,但你只能将它们恢复到你告诉GIT记住它的最后状态。
您必须显式地告诉GIT通过暂存和提交来记住您的更改。
因此,如果您的存储库中有file.txt,其中包含以下内容:
这是您上次提交或暂存的更改。
现在您编辑file.txt以包含如下内容:
保存文件,关闭编辑器,不对git执行任何操作,然后执行
rm -r
现在文件已经存在,并且git引用了文件,文件已经被删除,但是这个文件在git中的内容只有:ikfrs5lh3#
类似的事情也发生在我身上。我用过Android Studio,但它在其他JetBrains IDE中也能工作。
我已经通过
Local history > show history
恢复了我删除的文件,然后我已经恢复了所有删除的文件。希望能帮上忙。
cx6n0qe34#
git不会存储任何从未添加或提交过的更改,你能做的最好的事情就是git checkout 那个被删除的目录,然后你会把它恢复到上次提交时的状态。
git checkout <branch_you_are_in> <directory_of_all_your_source_code>
你看到的本地未提交的修改很可能是未提交的删除,也就是说git看到你删除了一堆文件,但是你还没有提交它们被删除的事实,所以git会说'嘿,还有一些修改(这里是删除)你还没有提交。'
velaa5lx5#
我已经在Eclipse IDE中打开了这个文件,所以为了恢复我在git checkout 时意外丢失的更改,我在Eclipse IDE中按照下面的建议进行了操作。
https://www.oreilly.com/library/view/eclipse-cookbook/0596007108/ch04s08.html 4.7.从本地历史记录还原元素和文件
您还可以通过在视图(如包资源管理器)中右键单击文件并选择以下菜单项之一来将整个文件恢复为其以前的版本:
替换为→本地历史中的上一个
替换为→本地历史记录
从本地历史记录还原
dl5txlt96#
原来,新的未提交的文件时,删除可以从回收站恢复(我使用的源树)。