git reset --soft <commit>和 git revert <commit>的区别
1.首先仓库里有两个commit
2.git reset --soft HEAD~1
git reset --soft HEAD~1
HEAD~1 整体指向 “当前最新提交的上一个提交”,也就是 “距离当前位置最近的前一个版本”。
此时回到add text1这个提交,并且之前在暂存区的数据也保存
适用场景:
本地开发时,提交后发现代码有问题,想撤销提交但保留修改(重新调整后再提交)。
3.git revert HEAD
git revert HEAD
这里的代表需要revert的提交
此时需要填写revert理由
编辑完毕输入:q
退出
此时多出一条Revert "add text2"的记录,之前的add text2 commit也保留,
并且此时工作区的text2文件消失,即意味着此时回到了add text1这个commit
的状态,并且之前的暂存区都不保留。
简而言之就是新增一条commit记录,暂存区不保留
适用场景:
- 撤销已推送到远程仓库的提交(不破坏公共历史,避免影响协作的同事)。
- 需要明确记录 “撤销操作”的场景(如生产环境发现某提交有问题,需留下操作痕迹)。
- 精确撤销历史中的某个中间提交(不影响该提交前后的其他提交)。