原文:How to undo changes in Git,作者:Zell Liew
你可能已经知道,Git 就像一个保存点系统。一般来说,最初学习 Git 的时候,你要学会保存你的变更,并将它们提交到远程仓库。但如何撤销一个变更,回到之前的状态呢?
这就是我们在这篇文章中要介绍的内容。
本地与远程
撤销已经在远程的东西会更复杂。这就是为什么你想把代码放在本地,直到它们被确认后再推送到远程。
四种常见情况
我们将涵盖以下四种常见情况:
- 放弃本地变更
- 修改之前提交的内容
- 回滚到之前的提交
- 撤销已经推送到远程的提交
注意:在下面的截图中,我使用的是 Fork for Mac OS Git 客户端。你也可以在其他类似的 Git 客户端上做同样的事情。
场景一:放弃本地变更
第一种情况是当你已经做了一些变更,还没有提交它们,而你想删除这些变更。
比方说,我们想创建一个新的功能,我们要在项目中添加一些 HTML 和 CSS:
<!--In index.html-->
<div class="feature"></div>
```
```css
/* In CSS file */
.feature {
font-size: 2em;
/* Other styles */
}
要放弃这些变更:
- 打开暂存区(staging area)
- 选择你想放弃修改的文件
- 在这些文件上点击右键
- 选择 Discard Changes
场景二:修改之前提交的内容
当你创建了一个提交,而漏掉了一些修改,你想在之前的提交信息中添加这些修改。
- 打开暂存区(staging area)
- 暂存要提交的文件
- 点击 Amend(修改)复选框
- 编辑你的提交信息
- 提交
场景三:回滚到之前的提交
在你的本地仓库中已经有了一些提交,你决定不再需要这些提交了,你想从之前的状态 “加载”你的文件。
- 进入 Git 历史记录
- 右键点击你想回滚的提交
- 选择重置
branch
注意:你只能重置为尚未推送到远程的提交。
场景四:恢复已推送到远程的提交内容
如果你想恢复一个已经被推送到远程分支的提交,你可以采用以下方法。
恢复意味着通过创建一个新的提交来撤销修改。如果你添加了一行,这个恢复提交将删除这一行。如果你删除了一行,这个恢复提交将把这一行加回来。
要恢复的话,你可以:
- 转到 Git 历史记录
- 在你想恢复的提交上点击右键
- 选择 Revert Commit(恢复提交)
- 确保
commit the changes
被选中 - 点击 Revert
其他场景
GitHub 有一篇有用的文章,告诉你如何用 Git 撤销几乎所有的变更。如果你遇到其他情况,这篇文章会对你有帮助。请在这里阅读。
谢谢你阅读本文。这篇文章对你有什么帮助吗?如果有,我希望你考虑分享它,你可能会帮助别人。谢谢你!
这篇文章最初是在我的博客上发布的。
如果你想获得更多的文章来帮助你成为一个更好的前端开发者,欢迎订阅我的邮件。