推荐答案
使用 git reset 回滚到指定提交
# 回滚到指定的提交,并保留工作目录和暂存区的更改 git reset <commit-hash> # 回滚到指定的提交,并丢弃工作目录和暂存区的更改 git reset --hard <commit-hash>
使用 git revert 创建新的提交来撤销更改
# 创建一个新的提交来撤销指定提交的更改 git revert <commit-hash>
使用 git checkout 切换到指定提交
# 切换到指定提交,查看历史状态 git checkout <commit-hash>
本题详细解读
git reset 命令
git reset 命令用于将当前分支的 HEAD 指针移动到指定的提交。它有三种模式:
- 软重置 (
--soft):仅移动 HEAD 指针,不改变工作目录和暂存区的内容。 - 混合重置 (
--mixed):默认模式,移动 HEAD 指针并重置暂存区,但不改变工作目录的内容。 - 硬重置 (
--hard):移动 HEAD 指针并重置暂存区和工作目录,丢弃所有未提交的更改。
git revert 命令
git revert 命令通过创建一个新的提交来撤销指定提交的更改。这种方式不会改变提交历史,而是添加一个新的提交来撤销之前的更改。适用于需要保留提交历史的场景。
git checkout 命令
git checkout 命令用于切换到指定的提交或分支。切换到某个提交时,Git 会进入“分离头指针”状态,允许你查看历史状态,但不会修改当前分支的 HEAD 指针。
使用场景
git reset:适用于需要彻底回滚到某个提交,并且不需要保留之后的提交历史。git revert:适用于需要撤销某个提交的更改,但希望保留提交历史。git checkout:适用于临时查看历史状态,而不需要修改当前分支的状态。