2014-06-30 51 views
2

我一直在努力研究一些代碼的大型重構,立即需要解決當前代碼庫中的修復;我以爲我在一個名爲'重構'的分支做了一個提交,並且切換回我的主分支來重新設置並再次分支。在這樣做的時候,我從來沒有將提交提交到遠程,似乎我的重置已經完成了我所做的工作。我試圖找到使用reflog的無頭提交,但無法找到它。有沒有一種方法可以更有效地搜索git知道的所有文件(永遠!),所以我可以找到這項工作?那裏有很多文件,當然這些文件被「添加」到git中,永遠不會在另一個分支或版本中。救命啊!〜! :)檢索git commit永不推送

隨着注入的幫助,我能夠得到我需要檢索的文件列表,但我有點不確定如何繼續進行而不進一步進行。

git fsck --lost-found 

結果:

Checking object directories: 100% (256/256), done. 
Checking objects: 100% (776/776), done. 
dangling blob 8f20a05f00d77c78d10a3918d6d34a2d2c097624 
dangling blob 47a10c7617b7cc9f8ba176050c5a3b79c54f102d 
dangling blob 57716763518cc82585d614fa0a8ee591c8de1153 
dangling blob b90129cb7ffe06fe23356e8fe7a1ad3b0e24d984 
dangling blob d621cb1156dfdf79163d0072d03cfe5d05254b01 
dangling commit 1bc2732eac1a8052dff64de96c7ecf38f11dc9c5 
dangling blob 30e2b939f96737af80ac0326b5c5cd39a8de9ce7 
dangling blob 4a2a3732e06511a26acd08a663fbfb671fdf0439 
dangling blob 57f2ff859a88c069442961baf86b78312b80ab13 
dangling blob 72ca95ac4e98e2d30677fe8d611ddcd30225d255 
dangling blob 9022ffd961b57d713d20a93dc4cb51f1b94a5918 
dangling commit bf1ae36f865ce066220024392dfbcc7a2fa359cf 
dangling blob ec4272468be0f90f2b4b6416649e98101a20b015 
dangling commit 134bf35bd24e7a7f4303279448c7cb0d33adcdb5 
dangling blob b833b9c702b43c1682bfcb841ad7f8d87baabfb1 
dangling blob c68b9511f2cd058603950ab630cad3b7935074aa 
dangling blob 3a4caeaa63cf6d73f6071d5a8b4566d84cf55898 
dangling blob 755cb36c73fd2d26e10711dc2ec221c039d805e7 
dangling blob d914e5a277ac574f0b3ee414166977b8e2331b7b 
dangling blob dd8c8338a4515b0b3f4b68340dbd10416e444eed 
dangling blob e4f4d97b4f7c245a2f5b0ff9671404bea7e6ffc7 
dangling blob f28c0bd9f0a4d59816bb0e052578e2a64b70feb6 
dangling blob 1a557bdf7c6d9bd972b0f38eb074ed7875a632c3 
dangling blob 3e0d0c77b6a47ee8f94a0d56416ee1d8833e89f0 
dangling blob 81dd04f987303d080977df050b32865cbf29720f 
dangling blob dd5d8e61e48343487189b1264e711a9d72bc1712 
dangling blob e26599b870d9c9e3387e018f2d4467d31c8c5dc2 
dangling blob 0607498a73ca5faf3b77a7c77107e7787c0f224f 
dangling blob 251f0d0bea520723ccf15466cf9f047d0d94d48f 
dangling blob 4ecfc189d8c61ff8033e02731bb88005e19f1ca9 
dangling blob 6c87b890fc2ff4f13d5a6ffd15355b3c7a9be269 
dangling blob bbaf45e48c21e2877c90a3864507ad56c52f6afe 

使用:

git show 8f20a05f00d77c78d10a3918d6d34a2d2c097624 

因此,最終的解決辦法是從管GIT中顯示的輸出爲每個斑點的文件。

git show <SHA> >> ~/recovered/fileName.js 
+0

你做了什麼樣的「復位」? – Ryan

+0

git reset --hard origin/master –

+0

在哪個分支上?只需再次檢查'重構'。 – Ryan

回答

3

如果您沒有提交到refactored分支,你應該能夠檢出該分支,找到你的提交完整。另一方面,如果您對主設備進行了更改,然後進行了硬重置,則應該能夠使用lost-found找到提交。根據你使用的是什麼版本的Git:

git fsck --lost-found 

或者

git lost-found 

這些命令應該把一份名單提交晃來晃去,你可以運行在找到你的提交git show。它應該是列表中的頂級項目之一。