在git scm中撤消"git checkout HEAD foo.c"

Mes*_*sut 7 git caching

我错误地检查了我对HEAD的最新更改的文件.

git checkout HEAD foo.c
Run Code Online (Sandbox Code Playgroud)

这意味着我失去了我想要承诺的所有变化......

有没有办法在git缓存或某些本地历史记录中找到这些更改?

kni*_*ttl 7

如果你在工作时没有对文件进行隐藏更改(然后恢复它们),那么你几乎无能为力.

如果你已经使用git add(你可能有,因为你即将提交)添加了文件的更改,那么blob应该已经在git的db中了.你可以git fsck用来找到悬空物体.寻找blob并检查所有这些 - 使用git showgit cat-file- (这需要时间,我知道......),但如果你很幸运,你会找到你文件的内容.使用git cat-file blob $hash_of_object > foo.cdo来恢复文件的内容


Lak*_*sad 3

除非您已提交(或将其隐藏或将其添加到索引),否则 git 不会知道您的本地更改。所以不行。