2013-01-09 94 views
5

我在我的主分支中做了一些我不再認爲合適的更改。出於參數的原因,我有一個名爲791fda4e1ac0e1a393e01340bf0fba3f333a73ff的提交散列,我現在想要創建自己的HEAD,因爲那時候所有東西在回購中都很穩定。我試着做到以下幾點:Git:將HEAD移回到之前的提交

git reset 791fda4e1ac 
git reset --soft [email protected]{1} 
git commit -m "Revert to 791fda4e1ac" 
git reset --hard 

然而,當我做了git push origin,我被拒絕,因爲原產地認爲它是一個非快進推:

! [rejected]  master -> master (non-fast-forward) 

什麼是正道將我的HEAD恢復爲提交hash 791fda4e1ac並在那裏獲得原始服務器?

回答

10

它被拒絕,因爲它非快進 - 它放棄了其他人可能建立的歷史。

改爲使用git revert來創建一個新的提交,它撤銷了現有提交的效果。

或者,如果您確定沒有其他人使用您的存儲庫,並且您將來不關心這些提交,請繼續並忽略該警告。

+1

在這種情況下'git revert'命令會是什麼樣子? – drevicko

+1

@drevicko請參閱http://stackoverflow.com/questions/1463340/revert-multiple-git-commits瞭解各種可能性。我最喜歡http://stackoverflow.com/questions/1463340/revert-multiple-git-commits#comment19940208_11743042。 – CletusW

2

您必須執行強制推送(git push -f origin)。