2010-08-27 45 views
4

我最後的命令是:我怎麼回去,我是......(回滾到之前提交)的Git初學者

git rebase -i HEAD^^ 

git rebase -i HEAD^^ 

git rebase -i HEAD^^^ 

我如何庫回到它是在之前的狀態列出的第一個命令?

注意:到目前爲止我所做的一切都是git commit -am "my commit message"。我不明白分支和合並,所以我沒有使用它們。我試圖將代碼回滾到之前的提交,但這似乎沒有做任何事情。

+0

只是一個警告; git rebase可能具有令人難以置信的破壞性,特別是如果您使用共享存儲庫進行工作。學習它是如何工作是一個好主意,但要小心在'現實世界'中使用它。:) – 2010-08-27 02:41:13

回答

8

如果這些都是您運行的確切命令,那麼git reset --hard [email protected]{3}會在3個命令前回到您的HEAD。更一般地說,看看git reflog的輸出來拿出你想要恢復的ref,然後git reset即可。

+1

不一定 - HEAD可以在交互式重新綁定期間進行很多次更新。 'git reset --hard @ {3}'儘管如此 - 假設所有rebase實際上都做了某事。如果他們不這樣做,那會在歷史上太過分了。我建議看'git reflog show '來確保你得到你想要的東西。 – Cascabel 2010-08-27 02:39:28

+0

git結帳會完成同樣的事情,還是隻會在完成rebase之前工作? – 2010-08-27 02:39:44

+0

'git checkout '從索引中抓取''的版本並將其放置在工作樹中。它隻影響工作樹中的該文件。它與移動HEAD無關。 – Cascabel 2010-08-27 13:06:14