2014-02-26 58 views
1

我意外地刪除了源目錄..我以爲我正在刪除另一個目錄。但是我有最後一次提交,這是我需要恢復的地方。Git - 如何回滾上次提交的所有更改?

我有兩個分支:

master 
dev1 

在DEV1:

git add . 
git commit -m 'commit message' 

然後:

git checkout master 
git merge dev1 

然後我無意中刪除整個存儲庫。

然後我很難復位到最後一次提交,我發現它顯示所有正確的更改已經完成。 但是當我到達我的目錄時,它是舊的目錄(我複製了舊的目錄,但並未從這裏刪除)。 我該怎麼辦?

+1

您不必在那裏硬復位;只是'git checkout master - path/to/folder'。 'git status'說什麼? – poke

+0

「刪除整個存儲庫」是什麼意思? – xlembouras

+0

@說它沒有提交。 – Andrius

回答

0

如果您刪除了整個存儲庫,則必須從備份中取回它(或從您從其他存儲庫重新引導或推送到其他存儲庫)。沒有什麼可以讓git繼續工作了。

0

做一個

git log

得到以前的哈希承諾,然後做一個

git revert your_hash_here

恢復提交。最後做一個

git push

把你的變化和快進他們掌握

+0

我試過了,但它給出了這個錯誤: 'cb963f5..f37d6e4 new_medical_card_rev1 - > new_medical_card_rev1 ! [拒絕]主 - >主(非快進) 錯誤:無法將某些文件推送到'/ home/oerp/openerp70/openerp/source/addons/ambulance_system' 爲了防止您丟失歷史記錄, - 前進更新被拒絕 在再次推送之前合併遠程更改(例如'git pull')。有關詳細信息,請參閱 '關於'git push --help'快速轉發'的部分「。 – Andrius

0

這取決於你的意思是什麼「刪除整個庫」。從您對其他答案的評論中,我認爲您並未刪除所有內容,如果您仍然可以在該目錄中成功執行git命令,您可以簡單地使用git reset --hard master(其中this question更詳細地解釋)。

如果你已經在本地主機上完全清理了你的整個git存儲庫目錄,因爲你將更改推送到遠程,所以你可以簡單地使用git clone <example.com/myrepo.git>,它將從遠程獲取所有的東西。