代码回滚
代码回滚
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