2011-06-16 366 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的重置頭^