跳到主要内容

5.2 撤消操作


在任何一个阶段,你都有可能想要撤消某些操作。这里,我们将会学习几个撤消你所做修改的基本工具。注意,有些撤消操作是不可逆的。这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方之一。

还原已修改的文件

使用 restore

如果一个文件在本地修改了,但不需要提交它,要如何把它还原到修改前的内容呢?其实运行 git status 会告诉你如何做。

git-status

git restore 文件1 文件2

使用 checkout

还原文件除了使用 restore 命令之外还有一种方法,就是使用 checkout 命令重新检出文件。

git checkout -- 文件1 文件2

取消暂存的文件

有时本地测试时临时修改了一些文件,这些文件的改动并不需要提交,但这时你习惯性的执行 git add . 把所有改动全部放到了暂存区。

使用 restore

这时你就需要把已暂存的文件取消暂存, git status 命令也会告诉你做法。

git-status

根据提示我们可以使用下面的命令取消暂存的文件。

git restore --staged 文件1 文件2

使用 reset

除了使用 restore 还可以使用 reset 命令。

git reset HEAD 文件1 文件2

覆盖上一次提交

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。此时,可以运行带有 --amend 选项的提交命令来重新提交。

git commit -am "复了一些内容"
git commit -m "修复了一些内容" --amend

上面的命令执行后在 log 里面只会出现“修复了一些内容”这一条提交记录,不会出现“复了一些内容”。

撤回 Commit

上面说到的撤回都是还是提交的撤回,如果已经提交到的 git 仓库还能撤回吗?当然可以。

# 用法
git reset [选项] [要撤销的位置]

# 撤销上一个commit,但不撤销add
git reset --soft HEAD^

# 撤销到N个commit,但不撤销add
git reset --soft HEAD~N

# 撤销上一个commit和add,但不删除代码
git reset --mixed HEAD~1

# 撤销上一个commit和add并删除代码
git reset --hard HEAD^

# 撤回到指定commit
git reset commitid
该内容为何方原创,转载请注明本页地址
https://iamhefang.cn/tutorials/Git系列教程/git-tutorial-5-2-revert-commit