上次說到,若是你已經提交了代碼,可是又後悔了,想要放棄此次的改動,回到以前的版本。這時候就須要作版本回退。git
咱們先在工做目錄中運行 git log 命令,看看到目前爲止的提交記錄:web
commit 81e34d1d269b13bb23619d828495119492eabc5aorm
Author: Crossin rem
Date: Thu Nov 28 17:27:34 2013 +0800it
remove filetest
commit 1edcbf15f45359768b3fa9cd99ddddde792912feimport
Author: Crossin file
Date: Thu Nov 28 15:16:37 2013 +0800webkit
add file to be deletedim
commit 15547cb5e6bb661a4b9934c1ea55fe0aeceb0682
Author: Crossin
Date: Tue Nov 26 14:39:06 2013 +0800
test file status
commit c1310cffd37c4b7fe765986035e54a3c27c2887f
Author: Crossin
Date: Tue Nov 26 14:11:46 2013 +0800
init readme
也許你的提交歷史和我不同,這不要緊。
還記得咱們前面課裏說過的 HEAD,它指向的是最新的提交。而上一次的提交就是 HEAD^,上上次是 HEAD^^,也能夠寫成 HEAD~2,以此類推。以前30次版本就是 HEAD~30,或者你願意也能夠打30個^。
要回退上一個版本,只要:
git reset --hard HEAD^
--hard 表示放棄全部的本地改動,其餘的可選模式咱們先無論。
輸出提示:
HEAD is now at 1edcbf1 add file to be deleted
HEAD 已經被移動回「add file to be deleted」這個版本。
若是想要移動到某個指定的提交,也能夠直接使用提交id,就是 git log 裏,commit 後面的一串字符(你的版本中的提交 id 和我是不同的)。
git reset --hard 15547
id 不用輸全,前幾位就夠,git 會自動去找匹配的提交。而後就能夠看到:
HEAD is now at 15547cb test file status