fundamentals

·git
#git

Git

Git

简单来说,git 其实就是一个版本控制和管理项目及其源代码的工具,它是本地的,运行在你的电脑上,有一系列的指令来帮助你使用这个工具

Ubuntu 会自带 git

GitHub

而 GitHub 就是 git 的一个线上开源托管平台,同理也有非开源的托管平台,例如 GitBucket,国内的开源托管平台叫做 Gitee,好像也有一些人和开源平台在用(但我个人感觉整体上还是不如GitHub,毕竟看了那么多帖子都在说国内的开源道路还有很长的路要走)

soft resethard 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 等版本标签