使用背景
很多时候当我们使用git管理我们的代码仓库时,会错误的提交代码,这时候我们想要恢复到我们提交之前的样子,这就需要使用
git reset 和 git revert。
使用区别
git reset
大家都知道HEAD是指向当前分支的最新commit,而git reset 就是将HEAD指向你想要指向的位置,并且抛弃掉这之后的提交。
1.查看git提交记录
git log
2.回退到想要回退的conmmitId
git reset --hard commitId
3.用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧:
git push -f
commitId是你想要回退到的版本。
git reset有三种模式
--hard:恢复的最彻底,工作区,暂存区,仓库全部恢复;
--mixed:默认模式,暂存区,仓库恢复,只保留工作区;
--soft:最温柔,只恢复仓库,暂存区,仓库仍然保留;
如果不小心git reset --hard
不要慌
git reflog可以查看所有分支的所有操作记录(只要本地磁盘git记录没有被清除),而git log只是显示提交记录并不会看到git reset的结果。这时候就可以看到被git reset删除的commitId,从而通过git reset重新让head指向被删除的commitId。

git revert
相比较与git reset而言,git revert并不会撤销抛弃之前的commit,而是通过提交修改删除掉提交到错误代码。
1.查看git提交记录
git log
2.查找到要删除的commitId
git revert -n commitId
3.将修改加入到缓存区
git add .
4.提交
git commmit -m "message"
5.提交到远程仓库,因为是新的提交,所以不会出现本地HEAD指向旧于远程分支的HEAD指向
git push
参考文章:
本文详细解析了Git中reset和revert命令的使用场景和区别。reset用于撤销提交,将HEAD指针移至指定commit,有三种模式(--hard, --mixed, --soft);revert则创建新的commit来撤销之前的更改,避免直接修改历史。适用于恢复误提交的代码,保持仓库历史的清晰。
1302

被折叠的 条评论
为什么被折叠?



