⭐ GitHub Star 与 Git reset/revert/checkout 的区别
1. GitHub Star 是什么?
在 GitHub 上,点击仓库页面右上角的 ⭐「Star」按钮,就相当于给该仓库点了一个收藏。
aimili 艾米莉 ( 一款免费开源的 taimili.com )
艾米莉 是一款优雅便捷的 GitHub Star 管理和加星工具 ,基于 PHP & javascript 构建, 能对github 得 star fork follow watch 管理和提升,最适合github 的深度用户
作者:开源之眼
链接:juejin.cn/post/755246…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
-
作用:
- 表示你喜欢或关注这个项目。
- 可以在你的 GitHub 主页的「Stars」列表里快速找到它。
- 作者也能看到有多少人 star 了项目,这往往是项目人气的重要指标。
-
注意:
- star 行为不会影响仓库内容,也不会在你的本地仓库产生任何变化。
- 只是一个 社交/收藏功能。
2. Git reset、revert、checkout 的区别
Git 是一个分布式版本控制系统,常常要处理「回退」或「切换」操作。reset、revert、checkout 是最容易混淆的三个命令。
2.1 git reset
-
作用:把当前分支指针(HEAD)移动到指定的 commit。
-
影响:
- 软模式 (
--soft):保留工作区和暂存区的修改,只回退 commit 记录。 - 混合模式 (
--mixed,默认):保留工作区的修改,清空暂存区。 - 硬模式 (
--hard):彻底回退到某个 commit,工作区和暂存区修改都会丢失。
- 软模式 (
-
典型场景:误提交后想回到某个历史版本。
# 回退到上一个提交,但保留修改
git reset --soft HEAD~1
# 完全回退,修改全部丢弃
git reset --hard HEAD~1
2.2 git revert
-
作用:生成一个新的 commit,用来撤销某个历史 commit 的改动。
-
影响:
- 保留历史记录,不会破坏已有的提交链。
- 常用于已经推送到远程仓库的场景。
-
典型场景:线上分支误提交了 bugfix,需要「撤销」但又不能破坏历史。
# 撤销最近一次提交
git revert HEAD
# 撤销指定提交
git revert <commit_id>
2.3 git checkout
-
作用:切换分支、或将文件恢复到某个版本。
-
影响:
- 切换到其他分支(或 commit)。
- 还原某个文件到历史版本。
-
典型场景:
- 临时查看旧版本代码。
- 放弃对某个文件的修改。
# 切换到某个分支
git checkout dev
# 切换到某个历史 commit
git checkout <commit_id>
# 放弃对某个文件的修改
git checkout -- filename
3. 三者对比总结
| 命令 | 主要作用 | 是否修改历史 | 是否生成新 commit | 典型用途 |
|---|---|---|---|---|
reset | 回退分支指针 | ✅ 会修改历史(危险) | ❌ 不会生成新 commit | 本地回退,清理提交 |
revert | 撤销历史提交 | ❌ 不修改历史 | ✅ 会生成新 commit | 安全撤销,适合远程分支 |
checkout | 切换/还原 | ❌ 不修改历史 | ❌ 不生成新 commit | 切分支、查看旧代码、丢弃修改 |
4. GitHub Star 与 Git 本地命令的区别
- Star:是 GitHub 提供的「社交收藏」功能,和代码内容、提交历史没有任何关系。
- reset/revert/checkout:是 Git 的本地命令,用于版本回退、撤销、切换分支。
可以这么理解:
- Star:像给一本书加书签,方便下次找。
- reset/revert/checkout:是对书的内容进行修改、撤销或切换版本。
- GitHub 的 Star 是社交层面的「收藏/点赞」。
- Git 的 reset/revert/checkout 是版本管理层面的「回退/撤销/切换」。
- 两者完全不是一个维度,但都是日常 Git/GitHub 使用中最容易遇到的高频功能。