Git 分支管理与标签

十一月 20, 2025 / 樱羽雨奈 / 10阅读 / 0评论

学习目标

理解 Git 分支的概念和底层原理,掌握分支的创建、切换、合并、删除等核心操作,并学会使用 标签 标记重要版本。

一、分支的概念与原理

1. 分支的概念

  • 定义: 分支是基于主线(例如 mastermain另外开启的一条新的代码开发线路

  • 作用: 允许开发者在不影响主分支稳定性的前提下,并行地实现新的功能、修复 Bug 或进行实验性操作。

  • 主分支: Git 初始化仓库时,会默认分配一个主分支,传统上称作 master,现代通常配置为 main

2. 分支的底层原理

Git 的核心不在于文件差异存储,而在于文件快照的存储。每次提交(Commit)时,Git 仓库会创建并存储以下三类对象:

对象类型

作用

Blob 对象

保存着文件快照。每个文件对应一个 Blob 对象。

树 对象 (Tree)

记录着目录结构Blob 对象的索引

提交 对象 (Commit)

包含着指向前述树对象的指针作者 / 提交者信息提交时间,以及最重要的——指向上一次提交对象的指针

  • 分支的本质: 分支(如 master)本身只是一个指向某个提交对象(Commit)的 可变指针(引用)。

  • HEAD 指针: 这是一个特殊的指针,它指向当前你所在的分支。也就是说,HEAD 是当前分支的别名。

示例: 当你在 master 分支上进行一次新的提交时,Git 会创建一个新的提交对象,然后将 master 指针(引用)移动到这个新的提交对象上。


二、Git 分支操作命令

以下是在命令行中进行分支管理的常用操作。

1. 查看与创建分支

目的

命令

描述

查看本地分支

$ git branch

仅列出本地分支,当前分支前有 * 标记。

查看所有分支

$ git branch -a

列出本地分支和远程分支。

查看分支状态

$ git log --oneline --decorate

查看各个分支当前所指向的提交对象。

创建新分支

$ git branch <分支名称>

例如:$ git branch testing

创建并切换

$ git checkout -b <分支名称>

例如:$ git checkout -b feature_login

2. 切换分支

切换分支命令可以让 HEAD 指针指向新的分支引用。

目的

命令(传统)

命令(现代)

切换分支

$ git checkout <分支名称>

$ git switch <分支名称>

3. 合并分支

将指定分支上的工作成果合并到当前所在的分支中。

# 1. 切换到目标分支(例如:主分支 main)
$ git checkout main

# 2. 合并指定分支(例如:将 testing 分支合并到 main)
$ git merge testing 

4. 合并冲突(Merge Conflict)

当两个分支对同一文件的同一部分进行了不同的修改时,合并时就会产生冲突。

  • 状态: 发生冲突后,Git 会进入 (MERGING) 状态。

  • 冲突标识: 冲突的文件中会包含特殊的标记符号:

    <<<<<<< HEAD              # HEAD 指向的是当前分支的内容
    好好学习
    =======                   # 分隔符
    好好学习----              # testing 分支的内容
    宝宝巴士
    学习好好
    >>>>>>> testing
    

解决: 手动编辑文件,删除这些冲突标记并保留 / 整合需要的内容,然后:

$ git add .               # 将解决冲突后的文件加入暂存区
$ git commit -m 'Merge fix' # 提交合并结果

5. 删除与重命名分支

目的

命令

描述

删除分支

$ git branch -d <分支名称>

安全删除:只能删除已经合并到上游的分支。

强制删除

$ git branch -D <分支名称>

强制删除:即使分支未合并,也会被删除(谨慎使用)。

重命名分支

$ git branch -m <旧名称> <新名称>

例如:$ git branch -m main master

编辑分支描述

$ git branch <分支名称> --edit-description

为分支添加描述信息。


三、标签(Tags)操作

1. 概念

标签(Tag)是 Git 中用来标记项目某个特定时间点(即某个提交版本)的别名。它常用于标记软件的发布版本(如 v1.0.0),本质上也是指向某个提交对象的固定指针(引用)。

2. 标签分类

  1. 轻量标签 (Lightweight Tag): 类似于一个只读的分支,只是一个指针,指向某个提交对象。

  2. 附注标签 (Annotated Tag): 存储在 Git 数据库中,包含标签描述、打标签者的名字、邮箱、日期等信息。强烈推荐使用附注标签

3. 查看与创建标签

目的

命令

示例

查看所有标签

$ git tag$ git tag -l

创建轻量标签

$ git tag <名称>

$ git tag v1.0

创建附注标签

$ git tag -a <名称> -m '<描述>'

$ git tag -a v1.1 -m 'Feature Complete Release'

基于指定版本创建

$ git tag -a <名称> <提交哈希值> -m '<描述>'

$ git tag -a v1.0 df4cfa75 -m '第一个版本'

4. 标签的删除与共享

目的

命令

描述

删除本地标签

$ git tag -d <标签名称>

$ git tag -d v0.1

推送单个标签

$ git push origin <tagname>

$ git push origin v1.5

推送所有标签

$ git push origin --tags

将所有本地新增的标签推送到远程。

删除远程标签

$ git push origin --delete <tagname>

$ git push origin --delete v0.1

#Git(5)

文章作者:樱羽雨奈

文章链接:https://www.xiyung.cn/archives/git-fz

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!