2012-04-30 114 views
4

我搞砸了我的應用程序,卷取做混帳,如何覆蓋提交

git checkout <commit number> 

報復,我想待的地方。

當我做了git的地位,它說

Your branch is behind 'origin/master' by 5 commits, and can be fast-forwarded. 

我想我是5號從我的最新承諾。有沒有辦法讓我的第5次從最近的一次提交我最近的一次?幾乎可以覆蓋或丟棄我的前四次提交中的所有內容?

UPDATE。

我做了

git reset --hard <commit number> 

,但我怎麼能推到我的倉庫?它說...

To prevent you from losing history, non-fast-forward updates were rejected 

我不想執行合併,我非常想消滅我的最新的4款

感謝

+0

可能重複[你如何回滾(重置)git倉庫到特定的提交?](http://stackoverflow.com/questions/1616957/how-do-you-roll-back-reset-a -git-repository-to-a-particular-commit) – Basilevs

回答

4

你總是可以強制推送與-f選項:

git push -f origin master 

,但當然要小心,因爲這將破壞歷史。

此外請確保指定遠程和分支名稱,因爲沒有它,默認情況下,git將嘗試強制推送所有分支到給定(或上游)遠程。

+0

謝謝你=)做了這個把戲=) – Sasha

1
git checkout ORIG_HEAD 

應該讓你回您最近結帳後的位置。

如果這沒有幫助,你也可以檢查出git reflog。它會向你顯示你最近的rebase,checkout等的列表,你可以找到你想要返回的提交的SHA。

+0

別忘了co是結帳的別名 – I82Much

1
git reset --hard <commit number> 
+1

我重新設置爲我想要的版本。但是當我嘗試做混帳推,它說.. 爲了防止你失去歷史,非快進更新被拒絕。我非常想刪除前4個提交或撤消一切 – Sasha