代码回滚
代码回滚
Reset:常用在私有分支上
作用:在提交层面上,reset 将一个分支的末端指向另一个提交。
常用标记 --soft – 缓存区和工作目录都不会被改变 --mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响 --hard – 缓存区和工作目录都同步到你指定的提交
场景:
开发合并发生冲突时,想和仓库代码一致,完全舍弃你没有提交的改动,使用git reset HEAD --hard
Checkout
作用:切换分支或恢复工作区文件
常用命令
git checkout hotfix
git checkout file
git checkout HEAD~2 //快速查看旧版本
Revert:常用在公共分支上
作用:撤销一个/多个提交的同时会创建一个新的提交
常用命令:
git revert
场景:
提交一个更新 commit id 为2e921a35020d022284d257464297d4a22c7f8b56
执行命令 git revert 2e921a35020d022284d257464297d4a22c7f8b56
保存即可
说明:
撤销生成的提交是可以撤销的 先提交文件A,再撤销提交文件A(A删除),最后撤销"撤销操作",文件A可以恢复
撤销并不一定是最新的一次提交
图示
Reset --soft
提交层面
在私有分支上舍弃一些没有提交的更改
不影响
不影响
影响
Reset --mixed
提交层面
--
不影响
影响
影响
Reset --hard
提交层面
--
影响
影响
影响
Checkout
提交层面
切换分支或查看旧版本
影响
不影响
不影响
revert
提交层面
将文件从缓存区中移除
影响
提示保存
不影响
Reset
文件层面
将文件从缓存区中移除
不影响
影响
影响
Checkout
文件层面
舍弃工作目录中的更改
影响
不影响
不影响
注意
git revert 可以用在公共分支上,git reset 应该用在私有分支上。
git revert 不支持文件层面的操作
参考资料
Last updated