乐闻世界logo
搜索文章和话题

What 's the difference between "git reset" and "git checkout"?

4 个月前提问
3 个月前修改
浏览次数12

1个答案

1

git resetgit checkout 命令在 Git 中都是用来操作版本的,但是它们的用途和影响是有明显差别的。

1. git reset

git reset 主要用于撤销之前的提交。它可以将当前分支的HEAD指针移动到指定的状态,通常用于调整提交历史。根据不同的选项,git reset 会对工作目录和暂存区有不同的影响。

用法示例: 假设你有一个提交历史 A-B-C-D,并且当前在最新的提交 D。如果你想要撤销最后两次的提交(C 和 D),可以执行:

bash
git reset --hard B

这会使得当前分支回到提交 B,同时工作目录和暂存区也会被重置到 B 的状态,提交 C 和 D 将完全被抹去。

2. git checkout

git checkout 主要用于切换分支或恢复工作目录中的文件。它可以切换到一个不同的分支或一个历史提交的状态,但它不会更改任何提交历史。

用法示例: 如果你想要查看旧的提交 B 的代码,但不想更改当前的提交历史,可以使用:

bash
git checkout B

这个操作会让你的工作目录显示为 B 提交的状态,但是不会移动 HEAD 指针,你仍然保持在原来的分支上。

总结

简而言之,git reset 用于更改提交历史,可能会导致某些提交从历史中被删除;而 git checkout 用于查看不同的分支或历史状态,但不更改提交历史。git reset 更多是在我们需要修正错误的提交时使用,git checkout 则用于切换工作范围或恢复文件。

2024年8月8日 09:20 回复

你的答案