⚠️ git log 重置到没有问题的版本号 如果只是在自己的分支上开发 找到没有问题的版本号(一般为上一次提交的commit)进行reset就可以了
但是如果上一次提交合并了其它分支代码(如master)对应上图
标记1
,切记不能回到这一次提交commit(
因为1是基于master分支的 该分支并没有我们分支上的代码
),而应该回退到自己本地分支上一次的commit(对应上
图标记2
),否则你本地分支上的commit记录就都被删除了,现有的分支 和 master代码一样
原因是: commit不仅记录提交信息 同时 commitId 记录当前版本号, 表示在当前commit时本地的所有文件,而1是基于master分支的 该分支并没有我们分支上的代码
解决方案: reset一定要重置到自己当前分支没有问题的commit 也就是上图标记2
git如何找回强制删除的commit
前提: 如果reset到了上图标记1的commit, 并且git push --force 强制进行删除了,此时我们本地分支的所有commit记录都将丢失,本地分支远程master分支内容一样
那么,如何找回丢失的commit记录
1、查找历史提交的commit记录
git reflog show --date=iso
注意: 这里不能用git log, git log命名显示从最近到最远的提交日志,当分支被删除 或者 提交信息被删除就找不到记录了
2、通过git show commitId查看对应的提交详情,确认是否是要恢复的commitId
git show commitId
3、根据commitId恢复删除的分支(或commit)到本地
git reset --hard commitId
git push --force (-f)
git checkout-b 要恢复的分支名 commitId
git checkout -b feature/test/blockv3-remove-02 802f24f2
git push
Notice
重置分支到某次commit, 在git push 之前 本次分支随意操作,但是git push 之前一定要慎重,尤其是git push -f 之前一定要确保重置操作没有问题