使用的命令: 1. git add。 (添加后我重置所有) 2. git reset。 3. git checkout。
在我检查完所有内容后,我需要它们。有没有办法让变化回来?
答案 0 :(得分:3)
如果您的文件按照您说的那样暂存,您可以使用带有git fsck
选项的--lost-found
命令将其恢复。
如果你运行git fsck --lost-found
,你会看到类似这样的东西(可能有更多悬空的blob线):
Checking object directories: 100% (256/256), done.
dangling blob 84eab6f56e81cebe1356c9c2a6e2882c05f5fc01
这些悬空斑点中的一些可能是你丢失的文件。
如果您运行git show <SHA of a dangling blob>
,您将能够看到该文件的内容,遗憾的是文件名可能已丢失。
但是,您可以将输出复制回相应的文件中。或者,在运行git fsck --lost-found
之后,悬空blob将保存到存储库根目录中的.git/lost-found/other/
目录。
答案 1 :(得分:0)
是的,如果你已经进行了更改,那么你绝对可以恢复你的文件。运行ucode_str
时,文件实际上已添加到Git的对象数据库中。在你做的那一刻,git会把文件放在索引中:
git add
请注意,bar.txt的条目包含文件的对象ID。 Git实际上已将文件添加到其对象数据库中。在这种情况下,Git将它作为一个松散的对象添加到存储库中:
% git add bar.txt
% git ls-files --stage
100644 ce013625030ba8dba906f756967f9e9ca394464a 0 bar.txt
100644 6af0abcdfc7822d5f87315af1bb3367484ee3c0c 0 foo.txt
这些文件最终将被垃圾收集。但这将发生在月,而不是几天。在这些文件被垃圾收集之前,您可以恢复它们。
最简单的方法是在交互模式下download and install the git-recover
program:
% ls -Flas .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a
4 -r--r--r-- 1 ethomson staff 21 14 Jun 23:58 .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a
% git recover -i
Recoverable orphaned git blobs:
61c2562a7b851b69596f0bcad1d8f54c400be977 (Thu 15 Jun 2017 12:20:22 CEST)
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
> tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
> veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
> commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
Recover this file? [y,n,v,f,q,?]:
在对象数据库中查找未已提交(或在索引中)的文件。您可以在the blog post announcing it中找到有关git-recover
的更多信息。