2011-06-16 308 views
50

我有一个git仓库挂钩在windows上的phpstorm。我犯了一些变更集,然后将它们推送到我们的“中央回购”。在此之后,我做了更多的提交。我不再需要这些未被推到中央仓库的提交。我如何清理我的工作副本与中央回购(原产地)相同?Git恢复本地提交

+0

我知道这是怎么样的一个“我告诉过你” -comment,但这就是为什么Git用户强烈建议你在做任何工作之前创建一个新的本地分支的原因,因为那样你就可以切换回master,并从这里开始一个新分支,而不必担心删除先前的提交(你可能想在某些情况下稍后回来)。 – 2015-06-30 16:38:03

回答

74
git reset --hard remotes/origin/HEAD 
+13

这对大师很有效,但在分支上有问题: – 2012-09-10 14:54:08

19

如果你觉得能肯定,并没有任何地方未提交变化:

git reset --hard origin/master 

其中origin/master的分支您已经被推到。

ref-log仍将包含回复的位,直到垃圾收集到期为止。要恢复的复归,

git reset --hard [email protected]{1} 
50
git reset --hard remotes/origin/YOUR/BRANCH 

/HEAD更好,因为你不会看到这一点:

$ git status 
On branch MY/BRANCH 
Your branch and 'origin/MY/BRANCH' have diverged, 
and have 1 and 1 different commit each, respectively. 
+4

这是答案。 – mimoralea 2013-11-12 18:25:45

3

按我understading,你创造一些承诺,你已经在中央回购推动,之后你已经创建了更多的提交,但是这些都存在于本地。这些都没有推动中央回购。

删除/恢复本地提交;

git reset HEAD~{number_of_commit} 

简单地说,你对你的命令提示符下打git log,并得到提交的名单。看看,你现在创建了多少个提交以及需要还原多少个提交。

例如,你有你的remove.revert最后两犯然后打

git reset HEAD~2 

有一个另一种方式来重置中央回购本地回购。但是,在这种情况下,您的本地提交将被删除,如果其他用户推送提交中央回购,那么您的回购将被更新。

命令是:

git reset --hard remotes/origin/HEAD 
11

您可以还原本地其中N是用来还原提交的数目由

git reset HEAD~N 

提交。举个例子:

,如果你要恢复单从本地提交,那么你可以使用

git reset HEAD~1 

或 git的重置头^