>> >> >> Reference << << << <<<<<<Ref>>>>>>
reset and revert
Modified: 2025-12-31 | Author:ljf12825

Reset

git reset用来回退到某个历史提交,它可以修改Git仓库中的提交记录和工作目录,常用于撤销更改或在错误的提交后进行修复

根据使用场景不同,git reset主要有三个模式

  1. git reset --soft <commit>
git reset --soft HEAD~1

这将把分支回退到上一个提交,同时保留当前的更改

  1. git reset --mixed <commit>
git reset --mixed HEAD~1

这将撤销最近的提交,并将暂存区的内容恢复到上一个提交的状态

  1. git reset --hard <commit>
git reset --hard HEAD~1

这会将分支回退到上一个提交,并且删除所有未提交的更改

其他

注意事项

Revert

git revertgit reset不同,它不会修改历史记录,而是通过创建一个新的提交来“撤销”指定提交的效果。它通常用于已经推送到远程仓库的情况,能够保持项目历史的完整性,避免破坏其他协作开发者的工作

基本使用

git revert <commit>

例如,撤销上一个提交

git revert HEAD

这会创建一个ie新的提交,撤销HEAD提交的所有更改

撤销多个提交

git revert HEAD~3..HEAD

这会撤销从HEAD~3HEAD之间的所有提交,每个提交都会生成一个新的反向提交

工作原理

git revert会生成一个新的提交,它的内容是“撤销”指定的提交所做出的更改。这是通过将修改应用到工作区来实现的,并创建一个新的提交记录。这个新的提交不会改变现有的提交历史,而是把原始提交的影响反转

常见参数

git revert -n <commit>

这种方式允许你将多个撤销的更改合并到一个新的提交中

git revert -m 1 <merge-commit>

-m 1表示选择第一个父提交作为主线

使用场景

  1. 撤销某个不合适的提交
  1. 撤销合并提交
  1. 撤销多个提交

Reset vs Revert

  1. git revert
  1. git reset