我正在设置我的第一个git存储库并执行以下操作,
git init
按照一些git-config的东西来设置远程服务器。然后我做了
git add directory
git status
哎呀,我添加了一些我不想要的文件。好的,所以我应该gm rm从提交列表中删除目录并重新开始
git rm directory
此时我应该正确阅读控制台消息和文档....但没有。所以我跑了
git rm directory -r -f
咦?我的目录在哪里?啊,好吧,git删除了它,所以它“不在那里”了。所以试试吧,
git status
git reset --hard
在没有成功,一些错误消息和一堆网络搜索后,我意识到我的失礼。我应该用
git rm -r --cached directory
会将其从提交列表中删除,但不来自我的文件系统。哎呦。幸运的是没有什么严重的遗失。
似乎应该有一种方法可以从中恢复,但我的大多数搜索最终都指向“--cached”选项......而且这有点晚了。没有提交,所以我不能只恢复/拉取文件(只有本地副本)。
是否可以取回这些文件?
答案 0 :(得分:6)
没有提交,所以我不能只恢复/拉取文件(只有本地副本)
和
是否可以取回这些文件?
答案是否。
没有提交,因此您没有使用源代码管理。
文件从未进入对象数据库。一般来说,你永远不能在git中获得未经注释的东西。您通常可以获得以前承诺的东西。
修改强>
另见
我今天偶然在我的回购邮件上运行
git reset --hard
,同时今天也有未提交的更改。为了得到它,我运行了git fsck --lost-found
,它将所有未引用的blob写入<path to repo>/.git/lost-found/
。由于文件未提交,我在other
内的<path to repo>/.git/lost-found/
目录中找到了它们。从那里,我可以看到未提交的文件,复制blob,并重命名它们。注意:仅当您将要保存的文件添加到索引时才使用(使用
git add .
)。如果文件不在索引中,则会丢失。
答案 1 :(得分:2)
我做了同样的错误,但是尽管早些时候在git索引中添加了文件,我无法使用'git fsck --lost-found'恢复它们。幸运的是,我记得我的IDE中的“本地历史记录”跟踪选项,所以使用它,没有任何问题我恢复了除了库二进制文件之外的所有代码:)