Understanding Git Reset and Revert

Understanding Git Reset and Revert

引言

项目开发中遇到过意外提交或糟糕的修改需要撤销的情况如何解决?Git Reset 它可以帮助我们在 Git 历史中回到过去,去除错误的提交或修改,为项目的进展铺平道路

reset 命令格式和参数 🛠️

在开始介绍 Git Reset 的使用案例之前,我们先来了解一下 Git Reset 命令的格式和参数。Git Reset 命令的一般格式如下

1
git reset [option] <commit>

Git Reset 命令有三个主要的选项参数,它们分别是:

  • git reset –soft : 此命令将 HEAD 移动到指定的提交,但保留暂存区和工作目录不变。这意味着所有的更改仍然被暂存,你可以重新提交。这是撤销提交但保留更改以便重新提交的好方法。
    只改变 HEAD 的位置,不改变暂存区和工作目录
  • git reset –mixed : 这是 git reset 的默认模式。此命令将 HEAD 移动到指定的提交,并且也会更新暂存区以匹配这个提交。但是,工作目录中的文件不会改变。这意味着你的更改仍然存在,但没有被暂存,你可以重新暂存和提交。
    只改变 HEAD 和暂存区的位置,不改变工作目录
  • git reset –hard : 此命令将 HEAD 移动到指定的提交,并且也会更新暂存区和工作目录以匹配这个提交。这将永久删除自指定提交以来的所有更改。这是一个危险的命令,因为它会永久删除更改,所以在使用之前一定要确认你不需要这些更改。
    改变 HEAD、暂存区和工作目录的位置
  • git reset –merge/keep 不常用,暂不做介绍

git reset 也可以操作文件,通过git reset <file_name>撤销暂存区中相应的文件

应用场景

修复错误的提交 🐞

有时候,我们可能会在项目中不小心提交了一些错误的代码或文件,甚至可能是敏感信息。你可以使用 git reset 回到之前的提交,撤销这次错误,然后再次进行修改,确保密码等敏感信息不再提交到代码库中。

回滚到稳定版本

另一个 Git Reset 的常见应用场景是回滚到项目的稳定版本。有时候,在进行新功能开发或进行一些实验性的修改时,我们可能会发现项目出现了一些难以解决的问题,导致项目无法正常工作。通过回到之前的稳定版本,你可以快速撤销引入问题的修改,并确保项目回到可用状态。

例如,你在开发一个网站时添加了一些新功能,但发现它们导致了严重的性能问题,你希望丢弃这些修改,回到一个已知稳定的版本。使用 Git Reset,你可以轻松地回到之前的提交,撤销这些修改,确保项目恢复正常运行。

Git Revert

git reset 可以撤销提交,但是会删除提交历史,如果想保留提交历史,可以使用 git revert

git revert <commit>,其中<commit>是你希望撤销的提交的哈希值或引用。Git 会自动创建一个新的提交,撤销指定的更改,并保留撤销的历史记录。此时,你的代码将回到撤销的提交之前的状态。

Author

Efterklang

Posted on

2024-05-05

Updated on

2024-09-18

Licensed under

Comments