首先,我籤一個分支我在忽略提交後很快恢復懸掛提交?
> 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