git 恢復(fù)之前的版本可以寫下面一行命令實現(xiàn)
git reset —-hard HEAD^
(head代表當(dāng)前的版本邻遏,加一個 ^ 代表現(xiàn)在的版本的上一個,加兩個 ^^ 代表上上一個)
讓我們來看一些例子:
$git init
$touch foo.txt
$git add foo.txt
$git commit -m "initialcommit"
$echo 'newdata'>>foo.txt
$git commit -a -m "morestuffaddedtofoo"
你現(xiàn)在看git的歷史記錄消请,你可以看到兩次提交:
$git log
*98abc5a(HEAD,master)morestuffaddedtofoo
*b7057a9initialcommit
現(xiàn)在讓我們來重置回第一次提交的狀態(tài):
$git reset --hardb7057a9
$git log
*b7057a9(HEAD,master)initialcommit
這看起來我們是丟掉了我們第二次的提交,沒有辦法找回來了垃你。但是reflog就是用來解決這個問題的。簡單的說喂很,它會記錄所有HEAD的歷史惜颇,也就是說當(dāng)你做reset,checkout等操作的時候恤筛,這些操作會被記錄在reflog中官还。
$git reflog
b7057a9HEAD@{0}:reset:movingtob7057a9
98abc5aHEAD@{1}:commit:morestuffaddedtofoo
b7057a9HEAD@{2}:commit(initial):initialcommit
所以,我們要找回我們第二commit毒坛,只需要做如下操作:
$git reset --hard98abc5a
再來看一下git記錄:
$git log
*98abc5a(HEAD,master)morestuffaddedtofoo
*b7057a9initialcommit
PS: 希望小二寫的對大家有所幫助望伦,歡迎留言。