相关文章推荐
销魂的风衣  ·  《Exploring in ...·  1 年前    · 
越狱的蚂蚁  ·  [netty]-入门案例 - ...·  1 年前    · 

⚠️ 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 reflog用来记录每一次commit记录,--date=iso表示以标准时间显示

注意: 这里不能用git log, git log命名显示从最近到最远的提交日志,当分支被删除 或者 提交信息被删除就找不到记录了

2、通过git show commitId查看对应的提交详情,确认是否是要恢复的commitId

git show commitId

3、根据commitId恢复删除的分支(或commit)到本地

// 方案1
git reset --hard commitId
git push --force (-f)
// 方案2
git checkout-b 要恢复的分支名 commitId
git checkout -b feature/test/blockv3-remove-02 802f24f2
git push

Notice

重置分支到某次commit, 在git push 之前 本次分支随意操作,但是git push 之前一定要慎重,尤其是git push -f 之前一定要确保重置操作没有问题

  •