強制刪除了一個分支而后又想重新使用這個分支,該怎么找回該分支上的代碼呢?
一:問題描述:
今天師父說上線幾個功能,讓我把開發的分支推送到遠程。當打開git就傻眼了,之前開發好的分支被我刪除了,就連推送到遠程的分支竟然都被刪除了。
二:恢復的操作過程:
1. git log -g :顯示已經commit信息
如果commit的內容過多的話,我們可以進行過濾查找: git log -g --author="xx@qq.com" // 根據用戶名過濾,模糊匹配 git log -g --grep "xx" // 根據commit時候的提交信息查找,模糊匹配
2. 根據commit信息,找到對應的commitId
3. git branch new_branch commitId,用這個commit創建一個新的分支
這樣,該新的分支,就保留了commitId對應的修改,我們可以使用git log 命令來查看是否正確
補充:
在執行第二步的時候,如果不行,可以執行:git fsck --full(文件系統檢測),該命令顯示所有未被其他對象引用 (指向) 的所有對象,查看改命令列舉出的commit中有沒有自己想要的commitId
git fsck 相對reflog是有優勢的。比方說你刪除一個遠程的分支然后關閉倉庫。 用fsck 你可以搜索和恢復已刪除的遠程分支
三:編輯器的Local History
如果是在不行,嘗試在編輯器的歷史記錄中,找到local history,看看能不能還原回來
git乃神奇,這次見識到了它的強大。
參考:
https://git-scm.com/book/zh/v1/Git-%E5%86%85%E9%83%A8%E5%8E%9F%E7%90%86-%E7%BB%B4%E6%8A%A4%E5%8F%8A%E6%95%B0%E6%8D%AE%E6%81%A2%E5%A4%8D