首先,我签一个分支我在忽略提交后很快恢复悬挂提交?
> git checkout -b renaming-Foo-to-Bar
然后我编辑的文件类Foo的情况下,重命名为酒吧。随后
> git add -u
但现在我省略运行git commit -m "renamed Foo to Bar"
。
认为我确实提交了,我继续将分支合并到主。
> git checkout master
> git merge renaming-Foo-to-Bar
这只是后,我读了合并消息 ,我意识到,我没有犯(的那种“无中生有合并”的东西)。
IIUC,我现在有一个所谓的“晃来晃去犯”,并通过运行
> git fsck --lost-found
Checking object directories: 100% (256/256), done.
dangling blob 03c044a..cb
dangling commit ab8076f..47
dangling commit 128532d..99
dangling commit 5605e2d..4a
我可以恢复它。但是dangling commit
和dangling blob
消息不带有时间戳或其他标识信息。
我该如何恢复这样的悬挂提交?
不幸的是我的dangling commits/blobs
有很多:
> git fsck --lost-found | wc
Checking object directories: 100% (256/256), done.
52 142 2806
Runninggit show 03c044a..cb
在前几个和过去几年的SHA揭示变化深藏在我的历史,不是最近的。
'git cat-file -p SHA1'非常方便,但它不会显示它输出的路径/文件名,甚至不会显示分隔符或时间戳。在一个输出中将多种语言放在一起。 – Calaf
路径和文件名存储在分段时未创建的树对象中。这就是git的工作方式。所以你不会有更好的!你可以使用相同的命令,从“提交”对象开始,然后是“树”并以“blob”结尾。 >多种语言被放在一起输出。不可能。一个'blob'Sha1 =一个文件内容的版本。 – Philippe