2012-02-09 42 views
2

我搞砸了我的Rails應用程序,所以我用命令:Git的結帳-f取消所有本地更改設置回初始提交

$ git checkout -f 

回到我以前的承諾,並擺脫我的螺絲UPS。經過研究,我發現這個命令徹底解決了所有的局部變化!現在我的應用程序顯示了Firefox中項目的初始提交,我似乎無法將其恢復到最新的提交併顯示我所做的所有工作,因此我可以在瀏覽器中對其進行測試。我已經試過三個戰術在這個崗位How do I undo a checkout in git?

$ git reset --keep 

$ git checkout master 

$ git reset --hard HEAD 

,但我還是看到我的應用程序,因爲它是當我第一次開始這個項目。當我輸入...

git status 

終端顯示我在分支主人。在運行git reflog時,我仍然看到所有提交。我怎樣才能讓我的應用程序回來,以便我真正看到所有本地更改,並且可以繼續在我的瀏覽器中測試該應用程序?

回答

1

很好,你知道reflog是什麼以及如何查看它。挑選最新的承諾,你想從引用日誌保存和:

git reset --hard abc123 

其中abc123是你想要的提交SHA1。這將更新master(你目前的分支)到提交abc123,以及所有的歷史暗示..

+0

它的奇怪...我只是試過這個'$ git reset --hard c13a3d3',結果我得到在終端是我所期望的 'HEAD現在在c13a3d3新增用戶...'這是最新的提交。但是當我瀏覽我的應用程序時,我仍然看到我的項目的一個非常舊的版本。這是一個混帳錯誤?我在Mac OSX 10.7.2上使用git version 1.7.4.4。非常感謝你的幫助! – Tim 2012-02-10 03:05:36

+0

我會首先檢查Git工作目錄中的文件是否如您所期望的那樣出現。你看到的問題不太可能是Git bug;它更可能是你忘了做一些你通常做的事情來編譯/構建/部署/不管你的代碼。 – 2012-02-10 03:31:22

+0

Greg!你是最棒的,非常感謝! – Tim 2012-02-16 04:46:16