git找到丟失的commit

從Git倉庫中恢復已刪除的分支、文件或丟失的commit


[日期:2014-09-27] 來源:Linux社區  作者:Linux [字體:大 中 小]


 
在使用Git的過程中,有時可能會有一些誤操作


比如:執行checkout -f 或 reset -hard 或 branch -d刪除一個分支


結果造成本地(遠程)的分支或某些commit丟失


可以通過reflog來進行恢復,前提是丟失的分支或commit信息沒有被git gc清除


一般情況下,gc對那些無用的object會保留很長時間後才清除的


reflog是git提供的一個內部工具,用於記錄對git倉庫進行的各種操作


可以使用git reflog show或git log -g命令來看到所有的操作日誌


恢復的過程很簡單:


1. 通過git log -g命令來找到我們需要恢復的信息對應的commit_id,可以通過提交的時間和日期來辨別。一個好的辦法是運行:1、git log --since="2 weeks ago" -- myfile 可以2個星期期間的myfile歷史;2、git log --branches="develop" 可以查看develop的commit


2. 通過git branch recover_branch[新分支] commit_id 來建立一個新的分支


這樣,我們就把丟失的東西給恢復到了recover_branch分支上了。


Q:如果是不小心執行了git reset,還有辦法取消嗎?


A:git reflog 查看操作歷史,找到之前 HEAD 的 hash 值,然後 git reset --hard 到那個 hash 即可。


Q:怎樣找回歷史版本中刪除的文件?


A:先確定需要恢復的文件要恢復成哪一個歷史版本(commit),假設那個版本號是: commit_id,那麼


git checkout [commit_id] -- <path_to_file>就可以恢復


GitHub 使用教程圖文詳解  http://www.linuxidc.com/Linux/2014-09/106230.htm


Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm


Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm


Git 遠程倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm


Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm


Git 服務器搭建與客戶端安裝  http://www.linuxidc.com/Linux/2014-05/101830.htm


Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章