Git Revert vs. Checkout vs. Reset
![](/images/git.256x256.png)
概要
本教程将解释Git中的三个命令——git revert、git checkout和git reset的区别及用法。
内容
git revert
git revert命令用于撤销之前的提交,并创建一个新的提交来撤销前一个提交所做的更改。这个命令会添加新的历史记录到项目中,而不会修改已有的历史记录。
git checkout
git checkout命令用于将存储在版本库中的内容检出到工作树中。它也可以有其他效果,具体取决于命令的用法。例如,它还可以切换工作的分支。这个命令不会对历史记录进行任何更改。
git reset
git reset命令稍微复杂一些。它的作用会根据用法的不同而有所不同。它可以修改索引(即暂存区),或者更改分支头所指向的提交。这个命令可能会修改已有的历史记录(通过改变分支引用所指向的提交)。
用法示例
-
如果你想撤销之前的提交,可以使用git revert命令。它会创建一个撤销前一次提交更改的新提交,并在历史记录中记录下这次“撤销”操作。
-
如果你在工作树中修改了一个文件,但没有提交这个修改,可以使用git checkout命令来还原该文件到代码库中的版本。
-
如果你已经提交了一个错误的修改,但还没有与其他人共享这个提交,你可以使用git reset命令来重写历史,使得看起来好像你从未进行过这个提交。
这只是一些可能的应用场景,还有其他命令可以在特定情况下使用,上述的三个命令也有其他用途。
总结
git revert、git checkout和git reset是三个完全不同的命令,它们的用途和作用也大不相同。在使用时需要根据具体的场景选择适当的命令。
相关文章推荐
- Git中"git reset"和"git checkout"的区别
- git-branch 分支名
- 如何在克隆之前查看GitHub存储库的大小?
- git-diff基础教程
- GitHub pull request 显示已经在目标分支中的提交
- 在Git中合并多个提交后再推送
- 使用Git,显示在一个分支中但不在其他分支中的所有提交
- 在Git中更改已推送的提交消息(前提是没有人从远程仓库拉取)
- 如何在克隆git仓库时删除已添加到.gitignore的目录
- 将composer.lock提交至版本控制吗?
- Github 提示在按照屏幕上的说明进行操作和推送新仓库时要求输入用户名/密码
- 如何在 Git 仓库中保留文件但不跟踪其变化
- 在GitHub上将公共仓库的fork变为私有仓库
- 如何解决Git Push出现"Repository not found"错误
- 从git/GitHub的历史记录中删除文件夹及其内容
- 如何修改一个提交(不改变提交信息)?
- 撤销Git中的stash操作
- Git中从存储区(stash)中提取单个文件(或文件的更改)
- 如何判断存储项是否存在于GitHub远程仓库?
- 如何从Git仓库中删除.DS_Store文件
- 使用Git递归更新子模块
- 在.gitignore 文件中可以使用注释