如果需要回退错误的代码提交,可以通过几种不同的 Git 命令来实现,具体取决于您想要的结果。以下是两种常见的方法:

方法 1: 使用 git revert

使用 git revert 命令可以撤销指定提交的更改,并创建一个新的提交来记录这个撤销操作。这种方法不会改变项目历史,更适用于已经推送到远程仓库的更改。

  1. 找到要撤销的提交的哈希值
    首先,使用 git log 查看提交历史,并找到您想要撤销的两个提交的哈希值。
git log
  1. 逐个撤销提交
    使用 git revert 命令逐个撤销这些提交。从最新的提交开始撤销:
git revert [最新提交的哈希值]
git revert [第二个提交的哈希值]

每个 revert 操作都会要求您输入提交信息。

  1. 推送更改到远程仓库
    如果您有权限,可以将更改推送到远程仓库。
git push origin [分支名]

方法 2: 使用 git reset

如果错误的提交还没有推送到远程仓库,或者您确定回退这些提交不会影响其他人(例如在一个个人项目中),您可以使用 git reset

  1. 找到要回退到的提交的哈希值
    使用 git log 查看提交历史,并找到您想要回退到的那个提交的哈希值。注意,这应该是错误提交之前的那个提交的哈希值。
  2. 回退提交
    使用 git reset 将 HEAD 指针移动到该提交。这将撤销之后的所有提交。
  • 如果您想保留对文件的更改但不保留提交(更改将被标记为未暂存):
git reset --mixed [提交哈希值]
  • 如果您想完全撤销更改并返回到那个提交的状态:
git reset --hard [提交哈希值]
  1. (如果需要)强制推送到远程仓库
    如果您已经将错误的提交推送到了远程仓库,并且确定要通过重写历史来修正这个问题(警告:这是危险的操作,可能会影响所有协作者),可以使用以下命令:
git push origin [分支名] --force

注意事项

  • 备份:在执行任何可能改变提交历史的操作之前,建议先备份您的代码。
  • 协作注意:如果您正在协作的项目中执行这些操作,请确保所有协作者都了解您的更改,并准备好在您的更改之后同步他们的本地仓库。
  • 使用 git reset --hard 谨慎:这个命令会永久删除您指定提交之后的所有更改,确保这是您想要的操作。