how to restore 'git reset –hard' operations

how to restore 'git reset –hard' operations

1 emulate git reset –hard

 

1.1 generate two commits

$ mkdir tt; cd tt
$ git init
$ touch foo.txt
$ git add foo.txt
$ git commit -m "init"
$ echo "data" >> foo.txt
$ git commit -a -m "data"

1.2 check the commits

tt$ git log --pretty=oneline 
48152f95f5e993ab167a02e76b43fa998c40b750 data
a8daade8ffd7a4ccf23b145c7a380391068e8ed2 init

1.3 reset –hard to the first commit

tt$ git reset --hard a8daade
HEAD is now at a8daade init

tt$ git log --pretty=oneline 
a8daade8ffd7a4ccf23b145c7a380391068e8ed2 init

2 restore to the second commit (lost after 'git reset –hard')

 

2.1 check reflog

reflog will note down all HEAD history. The 'reset', 'checkout' operations will be noted in reflog.

tt$ git reflog 
a8daade HEAD@{0}: reset: moving to a8daade
48152f9 HEAD@{1}: commit: data
a8daade HEAD@{2}: commit (initial): init

2.2 restore

tt$ git reset --hard 48152f9
HEAD is now at 48152f9 data

tt$ git log --pretty=oneline 
48152f95f5e993ab167a02e76b43fa998c40b750 data
a8daade8ffd7a4ccf23b145c7a380391068e8ed2 init
 
原文地址:https://www.cnblogs.com/aqing1987/p/5387039.html