2016-07-14 19 views
0

我有一個提交,我們將調用ffffffff,其中我提交的用戶試圖清除他的git緩存後,我的存儲庫中的幾乎所有文件都'重新創建'。的git diff-tree -r --root fffffff輸出的採樣下面是:恢復提交重新創建存儲庫中的許多文件

:000000 100644 0000000000000000000000000000000000000000 046c26d49dce17a235c5d3a6ae68b5ca3d92b1d7 A .gitignore 
:000000 100644 0000000000000000000000000000000000000000 c3326e41785be00452c0351076bfa066f82aadc4 A README.md 
:000000 100644 0000000000000000000000000000000000000000 603785805443e956172463b45738c953323407c0 A api/.checkstyle 
:000000 100644 0000000000000000000000000000000000000000 81120da5367551fad21c489022f63bcbf0b5c344 A api/.gitignore 
:000000 100644 0000000000000000000000000000000000000000 350b725cb2df7907af4591826aa3ca2c0d0b9b10 A api/Dockerfile-deploy 
:000000 100644 0000000000000000000000000000000000000000 1e9376a5932abdc47c6cc233db0c8c9c50cecb46 A api/Dockerfile-dev 
:000000 100644 0000000000000000000000000000000000000000 d34d14b7e5984b56645a96e8ad394307f61a1299 A api/build.gradle 

...等,超過3000文件。

這個提交的最大症狀是它混淆了IntelliJ,它似乎沒有遵循該文件的歷史記錄,而是在該文件的歷史記錄中只顯示一個提交:fffffff。我仍然可以用類似git log --follow -p <FILENAME>的方式查看文件的歷史記錄,但這不太可取。集成的IDE應該是畢竟,不是嗎? ;)

所以我的問題是這樣的。假設圍繞它的所有其他提交都很好,那麼刪除此提交的理想方法是什麼?一個簡單的git revert fffffff將顯示所有這些文件被刪除,所以這是行不通的。我被告知rebase可能是尋找解決方案的地方。

回答

0

如何嘗試git reflog這將告訴你所有的歷史。

或者,如果你想只刪除從歷史使用

git rebase -i #commitHashBeforeTheOneYouWantToDelete 

更具體的解決方案提交:

git rebase -i ffffff^1 

,並使用d標誌要刪除的承諾。