git 取消本地所有修改

本地修改还未添加到暂存区

如果你只是对工作区的文件进行了修改,但还没有使用 git add 命令将这些修改添加到暂存区,那么可以使用 git checkout 或 git restore 命令来取消这些修改。

使用 git checkout 命令

bash

git checkout -- .

在上述命令中,-- 用于明确指定后面跟的是文件路径,. 代表当前目录下的所有文件。执行该命令后,工作区所有未添加到暂存区的修改都会被撤销,恢复到上一次提交时的状态。

使用 git restore 命令

bash

git restore .

git restore 是 Git 2.23 版本引入的新命令,用于恢复工作区文件。同样,. 表示当前目录下的所有文件,执行此命令后,工作区未暂存的修改将被丢弃。

本地修改已添加到暂存区但未提交

如果你已经使用 git add 命令将修改添加到了暂存区,但还没有使用 git commit 进行提交,那么可以分两步来取消这些修改。

第一步:将暂存区的修改撤回到工作区

bash

git reset HEAD .

此命令会将暂存区的所有修改撤回到工作区,HEAD 代表当前分支的最新提交,. 表示当前目录下的所有文件。

第二步:取消工作区的修改

可以使用前面提到的 git checkout -- . 或者 git restore . 命令来取消工作区的修改。

本地修改已提交

如果你已经使用 git commit 命令将修改提交到了本地仓库,想要取消这些提交,可以使用 git reset 或者 git revert 命令,不过这两个命令有不同的效果:

使用 git reset 命令

bash

git reset --hard HEAD~n

其中,--hard 选项表示将工作区和暂存区都重置为指定提交的状态,HEAD~n 表示当前提交的前 n 个提交。例如,git reset --hard HEAD~1 会撤销最近的一次提交,使工作区和暂存区都恢复到上一次提交时的状态。需要注意的是,git reset --hard 会丢失指定提交之后的所有提交记录,因此在使用时要谨慎操作。

使用 git revert 命令

bash

git revert HEAD~n..HEAD

这个命令会撤销从 HEAD~n 到 HEAD 之间的所有提交,并生成一系列新的提交来记录这些撤销操作。与 git reset 不同,git revert 不会改变提交历史,只是通过新的提交来抵消之前的提交,适用于多人协作的公共分支。例如,git revert HEAD~2..HEAD 会撤销最近的两次提交。