# 撤销一个提交

撤销一个提交意味着创建一个全新的提交，撤销之前提交所做
的所有更改。这就像在 Git 中执行 `CTRL + Z`。

在 Git 中，撤销操作变得更加简单，因为你推送到远程仓库的每个提交都有一个唯一的字母数字键（称为 SHA，安全哈希算法）与之关联。
这意味着只要你有该提交的 SHA，你就可以撤销任何提交。
但你必须小心按顺序撤销操作，以免破坏你的仓库。


为了获取我们想要撤销的特定提交的 SHA，查看所有提交的日志会很有帮助。
要获取此信息，我们可以运行命令：
```git log --oneline ```
仅运行 ```git log``` 命令也会给我们返回 SHA（长格式）。
但使用 ```--oneline``` 标志会告诉 Git 我们希望以简洁（单行）的方式显示，以便更容易阅读。

当你运行此命令时，显示的前 7 个字符就是所谓的简短提交哈希。

例如，运行 ```git log --oneline``` 时，我得到的输出如下：
```
389004d added spacing in title
c1b9fc1 Merge branch 'master' into tutorials
77eaafd added tutorial for reverting a commit
```

这表明，通过使用 ```git log --oneline```，我们可以获取仓库中所有提交的列表，并附带每个提交的前 7 个字符的 SHA。

现在，假设我想撤销我提交的 "在标题中添加了空格" 这个更改，以下是我将采取的步骤：

*  复制该提交的 SHA，在本例中是 ```389004d```
*  然后运行命令 ```git revert 389004d```

这将打开我的文本编辑器，并提示我编辑提交信息。
你可以选择保留 Git 的默认提交信息，该信息以 `Revert` 开头，
也可以根据自己的喜好自定义提交信息。

*  接下来，我将保存并关闭文本编辑器。
*  返回命令行。
*  运行 ```git push origin <branch-name>``` 将撤销的更改推送到 GitHub。

就这样，变更被撤销。在这种情况下，我的仓库将恢复到 ```c1b9fc1``` 时的状态。