使用git revert撤销提交
revert的英文释义是回复、恢复(到原来的状态)
作用
git revert 是 Git 中用于撤销一个或多个提交的命令,但是会保留历史记录。它创建一个新的提交,该提交是对原提交的相反操作,以撤销原提交的更改。通过 git revert 撤销提交,可以保持历史记录的完整性,不会修改已经共享的提交历史。
语法
撤销单个提交:
java
git revert <commit-hash>
这会创建一个新的提交,用于撤销指定的提交 的更改。
撤销多个提交:
java
git revert <commit-hash1> <commit-hash2> ...
这会为每个指定的提交创建一个新的撤销提交。
撤销最近的提交:
java
git revert HEAD
撤销某个范围内的提交:
java
git revert <commit-hash1>^..<commit-hash2>
这会撤销从 (不包括)到 (包括)范围内的所有提交。
撤销提交时,Git 会打开一个文本编辑器,让你输入撤销提交的信息。你可以修改默认的提交信息,然后保存并关闭编辑器。
使用git reset撤销提交
reset的含义:重置!现在,我们先看看git reset的作用。
作用
git reset 用于移动 HEAD 指针并可选地更改暂存区和工作目录的状态。它是一个非常强大的工具,常用于撤销提交、取消暂存文件、修改提交内容等操作。
撤销提交,保留修改
git reset --soft HEAD~1
这会将 HEAD 指向的分支的最新提交撤销掉,并保留所有更改在工作目录中。这样你就可以重新提交,并修改提交信息。
撤销提交,取消暂存的文件
java
git reset HEAD~1
这会将 HEAD 指向的分支的最新提交撤销掉,并将暂存区的文件取消暂存,但保留在工作目录中。这样你可以重新选择要暂存的文件。
撤销提交,丢弃修改
java
git reset --hard HEAD~1
这会将 HEAD 指向的分支的最新提交撤销掉,并丢弃所有更改,包括暂存区和工作目录中的文件。这样你就可以完全回到上一个提交的状态。
将 HEAD 指针移动到指定的提交
java
git reset --hard <commit-hash>
这会将 HEAD 指针移动到指定的提交,并丢弃所有更改。这可以用来回滚到历史提交状态
撤销实操
由于本地没有其他修改,暂存区也没有文件,因此,使用
java
git reset HEAD~1
撤销实操
由于本地没有其他修改,暂存区也没有文件,因此,使用
java
git reset HEAD~1
但是,我们刚才的误操作,导致有两条不应该出现的操作记录
所以,我们HEAD指针应该向下移动2个
java
git reset HEAD~2
命令行输入后,我们就会发现本地代码已经恢复到没有提交这两个记录前的状态了!
但云端的记录还在
那如何删除云端的记录呢?很简单,将本地仓库的代码强推到远端仓库覆盖掉就行!(本地仓库已经是未提交两个错误信息时的状态了)
最后,我们使用下面的命令将本地代码强行覆盖云端
java
git push --force