2012-04-30 76 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