2011-04-17 94 views
3

我是git的新手,我遇到了一個大問題。即如果我做錯了什麼,如何將存儲庫恢復到良好的狀態。我已經看到了如何使用'git revert'來進行修改以撤消以前的修改,並且我已經閱讀了很多關於stackoverflow和相關位置的問題,但是我還沒有找到簡單的方法來簡單地說「把我的本地存儲庫位返回到我做X之前的確切位置「,其中X可能是提交,合併或其他存儲庫操作。如何將不良變更回滾到本地git存儲庫?

長篇:

今天這個特別難咬了我,當我試圖安裝一個第三方的依賴(茉莉花)子樹分支下面就Subtree Merging在ProGit書的步驟。我遵循了這些步驟,並設置了一個跟蹤遠程Jasmine存儲庫的分支的本地存儲庫。然後我用read-tree將它連接到我的問題的子目錄中,並且都很好。不幸的是,Jasmine分支包含一個子模塊引用非公開的URL,當我試圖解決這個問題時,我在跟蹤遠程存儲庫的分支上做了更改(和提交)。無論我嘗試恢復這些提交/更改,我的'git push'命令都無法工作,因爲存儲庫認爲我已更改Jasmine代碼,並試圖通過公開的URL將它們推回來。

摘要:我搞砸了我的倉庫的一部分,無法弄清楚如何恢復它在我發佈由我的git新手狀態引起的命令之前的原始狀態。

是否有無論如何回滾整個存儲庫幾個提交/更改,或者我只需要克隆它,並重新啓動時發生這種情況?

回答

5

使用git-引用日誌

git reflog 

現貨想要(通過適當的數字替換N)回到

git reset [email protected]{n} 

修訂

也許git reset --hard後,如果您有不乾淨的工作樹; 那些將不可恢復)

+1

+1。我只想指出,你可以在'git reset'中指定你想要的任何提交,而不僅僅是'git reflog'中的提交。在這種情況下,他常規的'git log'提交可能就足夠了。 – 2011-04-17 21:45:43

相關問題