git reflog
可以查看操作记录,例如创建分支、切换分支等操作。
注意:
git log
查看的是当前分支的提交记录。
示例
使用git reflog
查看操作记录:
Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git reflog
ddfa3c8 (HEAD -> master) HEAD@{0}: rebase -i (finish): returning to refs/heads/master
ddfa3c8 (HEAD -> master) HEAD@{1}: rebase -i (reword): add some numbers to test1.txt
ca0ad8e (origin/master, origin/HEAD) HEAD@{2}: rebase -i: fast-forward
454d25c HEAD@{3}: rebase -i (start): checkout c9f926d
d574d8e HEAD@{4}: rebase -i (finish): returning to refs/heads/master
d574d8e HEAD@{5}: rebase -i (start): checkout 454d25c
d574d8e HEAD@{6}: checkout: moving from rebase-i-demo to master
0309099 (rebase-i-demo) HEAD@{7}: rebase -i (finish): returning to refs/heads/rebase-i-demo
0309099 (rebase-i-demo) HEAD@{8}: rebase -i (pick): modified: test1.txt
547c25b HEAD@{9}: rebase -i (reword): add 'klmno' to test1.txt.
454d25c HEAD@{10}: rebase -i: fast-forward
c9f926d HEAD@{11}: rebase -i (start): checkout HEAD~3
e7a47a0 HEAD@{12}: checkout: moving from master to rebase-i-demo
d574d8e HEAD@{13}: commit: add 'uvwxy' to test1.txt
...
可以看到执行过的各种操作,都被记录下来了。操作前面的提交哈希值,表示该操作执行时所在的提交。
恢复到某个提交版本
reflog是Git的安全网,记录了仓库中所做的全部更改,无论更改是否提交。知道了某步操作的提交哈希值,就可以使用git reset
或git checkout
恢复到该提交版本,从而撤销该操作。
恢复到头部往后的第2个提交:
$ git reset HEAD~2