fundamentals
Git
Git
简单来说,git 其实就是一个版本控制和管理项目及其源代码的工具,它是本地的,运行在你的电脑上,有一系列的指令来帮助你使用这个工具
Ubuntu 会自带 git
GitHub
而 GitHub 就是 git 的一个线上开源托管平台,同理也有非开源的托管平台,例如 GitBucket,国内的开源托管平台叫做 Gitee,好像也有一些人和开源平台在用(但我个人感觉整体上还是不如GitHub,毕竟看了那么多帖子都在说国内的开源道路还有很长的路要走)
soft reset 与 hard reset 的区别
soft reset
命令示例: git reset --soft <目标提交>
效果:
-
移动 HEAD 指针 到 <目标提交>
-
保留工作区(Working Directory)中的所有改动
-
保留暂存区(Staging Area)中的改动(不清空暂存区)
适用场景:
如果你提交(commit)之后,突然发现需要在同一个提交里补充一些改动,但又不想丢掉已经提交的内容,就可以执行 git reset --soft HEAD~1(退回到上一个提交)
此时你的工作区和暂存区都会保留所有改动,你可以继续进行编辑或者直接再一次 git commit --amend(修正上一次提交),以合并或补充内容
hard reset
命令示例: git reset --hard <目标提交>
效果:
-
移动 HEAD 指针 到 <目标提交>
-
工作区(Working Directory)直接还原到 <目标提交> 时的状态
-
暂存区(Staging Area)也会被清空,丢弃任何未提交的改动
适用场景:
当你想彻底抛弃当前分支里尚未提交或不需要的改动,恢复到 <目标提交> 的干净状态时
例如,某次实验性修改太乱了,干脆想回到过去一个正常的提交点,就可以 git reset --hard HEAD~1
注意:--hard 会导致本地未提交的改动丢失,一定要谨慎使用
加 Tag 是什么?
在 Git 中,Tag(标签) 就像一个“里程碑”或“版本号”,用来标记一个特定的提交。常见用法是给某次发布或重要节点打上标签,方便后续快速查找或回滚到该版本
创建轻量标签(Lightweight Tag)
git tag v1.0.0
这会在当前的 HEAD(最新提交)上创建一个名为 v1.0.0 的标签
创建带注解的标签(Annotated Tag)
git tag -a v1.0.0 -m "Release version 1.0.0"
这会同时包含作者、日期、说明等元信息,更适合正式发布场景
推送标签到远程
git push origin v1.0.0
默认情况下,标签不会自动推送到远程,需要手动执行
查看标签
git tag
可以列出所有在本地的标签
总结来说,Tag 通常用来为某个特定提交“做标记”,在团队协作或发布版本时非常常见,例如 v1.0.0、v2.3.4 等版本标签