Git通过reflog恢复被删除的分支即回到指定版本
git reflog [查看本地会影响HEAD指针的命令操作记录,这个不会同步到远程仓库]
git reflog -n 10 的结果如下:
22cf4d6 HEAD@{0}: commit: 测试删除文件, 无意义
7bed05d HEAD@{1}: checkout: moving from master to lh_test
c51a619 HEAD@{2}: checkout: moving from lh_test to master
7bed05d HEAD@{3}: pull origin master: Fast-forward
7bf1425 HEAD@{4}: checkout: moving from master to lh_test
c51a619 HEAD@{5}: checkout: moving from lh_test to master
9d13128 HEAD@{6}: checkout: moving from master to lh_test
c51a619 HEAD@{7}: checkout: moving from lh_test to master
9d13128 HEAD@{8}: checkout: moving from master to lh_test
c51a619 HEAD@{9}: checkout: moving from lh_test to master
恢复流程:
# 恢复10条操作日志
1. git reflog -n 10
# 找到之前commit该分支的部分
# 如同该句: 9d13128 HEAD@{9}: commit: 测试, 无意义
2. git branch BranchName 9d13128/HEAD@{9}
恢复流程:
# 恢复10条操作日志
1. git reflog -n 10
# 回退到指定版本
git reset --hard CommitId/HEAD@{n}
git reset --soft CommitId/HEAD@{n}
git revert HEAD //撤销最近一次提交
git revert HEAD~1 //撤销上上次的提交,注意:数字从0开始
git revert 0ffaacc //撤销0ffaacc这次提交
rest和revert在本目录的git 代码操作中有详解.
简单来讲,就是:
reset通过版本回退,来达到代码的回滚.
revert通过提交一个新的commit,来达到代码回滚.