我们有时候add文件之后,但是没有提交,把文件修改丢了,想要找回修改,有两种方法
采用git fsck --lost-found
执行git fsck --lost-found
,这个命令
悬空 commit 6b420695167abf8f25b9ab3c6c4c52b9823f4aae
悬空 commit 7f0669ada3ab26cf634da7a6df2755982f383a2f
悬空 blob 54ca3811fbf9405f16107585c8c97fac1bd8040f
将第一个blob的值,采用git show id的方式,去查看使用。
git show 6b420695167abf8f25b9ab3c6c4c52b9823f4aae
这样就能找到丢失的add文件
这里用find .git/objects -type f | xargs ls -lt | sed 3q
- 这里用find .git/objects -type f | xargs ls -lt | sed 3q这个命令,他的含义是查找.git/objects文件夹下的普通文件 按照时间排序后 打印在终端里 sed 3q 是打印3行 sed 100q 是打印100行,随你喜欢。
find .git/objects -type f | xargs ls -lt | sed 3q
- git cat-file -t7f5965523d2b9e850b39eb46e8e0f7c5755f6719 就能看见文件类型
- 把最后一个/去掉 复制从objects/ 后面的所有东西放在-t后面git cat-file -p id就能看见文件内容。
git的object类型
在git里, 有四种类型的object, 分别是tree | blob | commit | tag
tree代表的是目录结构, 或者简单地理解为代表一个目录。
blob用来存储文件内容, 或者说表示一个文件。
commit 存储一次提交的信息,包括所在的tree,parent是谁,作者及message等信息。
tag 就是标签的意思, 实际就是commit的别名。