Git 分支、远程协作与标签管理
分支、远程仓库与标签是 Git 团队协作中最核心的三个能力:分支让你在独立的线上开发而不影响主干,远程仓库是团队协作的桥梁,标签用于标记重要的发布版本。本文依次介绍。
一、分支管理
分支是 Git 的核心功能,它允许你在独立的线上开发新功能、修复 Bug,而不会影响主分支(如 main)。
1. 查看分支
git branch # 本地分支列表,当前分支前会显示 * 号
git branch -r # 仅显示远程分支
git branch -a # 显示所有分支(本地 + 远程)
2. 创建与切换分支
git branch feature-xxx # 创建新分支(停留在当前分支)
git checkout feature-xxx # 切换到该分支
# 创建并切换到新分支(常用)
git checkout -b feature-xxx
# Git 2.23+ 推荐使用 switch 命令(语义更清晰)
git switch feature-xxx # 切换分支
git switch -c feature-xxx # 创建并切换
3. 合并分支
将另一个分支的修改合并到当前分支。
# 首先切换到目标分支(例如 main)
git checkout main
# 将 feature-xxx 分支合并进来
git merge feature-xxx
合并类型:
| 类型 | 说明 |
|---|---|
| 快进合并(Fast-forward) | 当目标分支没有新提交时,直接移动指针,不会产生额外的合并提交。 |
| 三方合并 | 当两个分支都有新提交时,Git 会自动创建一个新的合并提交(merge commit)。 |
冲突处理:如果两个分支都修改了同一文件的同一区域,Git 会暂停合并并标记冲突。需要手动编辑冲突文件,然后 git add + git commit 完成合并(详细步骤见 查看历史与撤销)。
4. 删除分支
git branch -d feature-xxx # 删除已合并到当前分支的分支
git branch -D feature-xxx # 强制删除未合并的分支(丢失未合并的提交)
-d(safe)会检查该分支是否已合并,若未合并则拒绝删除。-D(force)会直接删除,即使有未合并的提交也会丢失,请谨慎使用。
5. 快速示例
# 查看当前分支
git branch
* main
# 创建并切换到新分支
git checkout -b feature-login
# 在 feature-login 上开发,提交后切换回 main
git commit -m "add login"
git checkout main
# 合并 feature-login 到 main
git merge feature-login
# 删除已合并的分支
git branch -d feature-login
二、远程仓库协作
远程仓库是团队协作的桥梁。下面介绍管理远程仓库、推送更新、拉取更新以及克隆后同步的常用命令。
1. 管理远程仓库
git remote -v # 查看当前所有远程仓库的别名和地址
git remote add origin <url> # 添加远程仓库(origin 是默认别名)
git remote remove origin # 移除名为 origin 的远程仓库
git remote set-url origin <new-url> # 修改远程地址
origin是克隆远程仓库后自动生成的默认名称,你也可以使用其他名称(如upstream)。
2. 推送到远程(git push)
git push origin main # 将本地 main 分支推送到远程 origin/main
git push -u origin main # 推送并设置上游(以后直接 git push 即可)
git push --all origin # 推送所有本地分支到远程
git push origin --delete feature # 删除远程的 feature 分支
-u(或--set-upstream)建立本地分支与远程分支的关联,后续可省略分支参数。- 首次推送新分支时建议使用
-u。
3. 拉取远程更新
git fetch origin # 获取远程仓库的最新提交(但不合并到本地分支)
git pull origin main # 拉取远程 main 分支并合并到当前分支(fetch + merge)
git pull --rebase origin main # 拉取并使用 rebase 保持线性历史(避免多余的合并提交)
fetch只是将远程更新下载到本地仓库的远程跟踪分支(如origin/main),不会自动修改你的工作区。pull会自动合并(或变基),可能产生冲突需要解决。
4. 克隆后同步
git clone <url> # 克隆远程仓库到本地(自动创建 origin 和主分支跟踪)
# 进入仓库目录后,直接使用
git pull # 若当前分支已设置上游,则拉取并合并
- 克隆后,本地
main分支默认跟踪远程origin/main,因此直接git pull即可获取远程最新代码。仓库创建/克隆的详细说明见 Git 安装与配置。
5. 常见协作流程示例
# 1. 克隆仓库
git clone https://github.com/user/repo.git
cd repo
# 2. 查看远程
git remote -v
# 3. 创建新分支并推送
git checkout -b feature-xxx
git push -u origin feature-xxx
# 4. 其他人拉取更新
git pull origin main
# 5. 删除远程分支
git push origin --delete feature-xxx
三、标签管理
标签(Tag)用于为仓库中的某个特定提交打上标记,常用于标识发布版本(如 v1.0.0)。Git 支持两种标签:轻量标签(lightweight)和附注标签(annotated)。
1. 创建标签
轻量标签(Lightweight Tag)
相当于一个不会移动的分支指针,只包含提交的引用,不包含额外信息。
git tag v1.0.0
附注标签(Annotated Tag,推荐)
存储在 Git 对象库中,包含打标签者的名字、邮箱、日期和标签说明。建议用于正式发布。
git tag -a v1.0.0 -m "release version 1.0.0"
-a表示创建附注标签,-m指定标签说明(若不写会弹出编辑器)。
2. 查看标签
git tag # 列出所有标签(按字母顺序)
git tag -l "v1.*" # 匹配通配符,如列出所有 v1.x 版本的标签
git show v1.0.0 # 显示标签信息和对应的提交
3. 推送标签到远程
默认情况下,git push 不会推送标签,需要显式推送。
git push origin v1.0.0 # 推送单个标签
git push origin --tags # 推送所有本地标签
- 推送后,其他人可以通过
git pull获取标签。
4. 删除标签
# 删除本地标签
git tag -d v1.0.0
# 删除远程标签
git push origin --delete v1.0.0
# 或使用旧语法
git push origin :refs/tags/v1.0.0
- 删除远程标签后,其他人需要手动删除本地的同名标签(
git tag -d v1.0.0)并重新拉取。
5. 标签的用途
- 版本发布:标记软件版本号(如
v2.1.0)。 - 历史锚点:记录重要的提交(如上线前最后一次提交)。
- 回滚依据:通过标签可以快速切换到某个版本,例如
git checkout v1.0.0。
四、注意事项
-D强制删除分支、git push --force/--force-with-lease强制推送都会改写或丢弃历史,仅在明确知道后果的情况下使用,公共分支尽量避免。- 首次推送新分支或首次克隆后,务必确认上游跟踪关系是否正确(
git branch -vv可查看)。 - 附注标签包含完整的元数据,推荐用于发布版;轻量标签适用于临时标记。标签一旦推送到远程,应避免修改或删除,以免影响协作。
- 删除远程分支/标签是破坏性操作,删除前确认该分支/标签确实不再被其他协作者依赖。
五、总结
| 能力 | 关键命令 |
|---|---|
| 分支 | git branch / git checkout -b / git switch -c / git merge / git branch -d |
| 远程 | git remote add / git push -u / git fetch / git pull |
| 标签 | git tag -a / git push origin --tags / git tag -d |
掌握以上内容,即可独立完成分支开发、远程协作与版本发布标记。
参考文献
相关文章
Git 查看历史、撤销回退与冲突解决
涵盖 git log / git diff 查看提交历史与差异,commit --amend / reset / revert 的撤销与回退方式对比,以及合并、拉取、变基时冲突的产生原因与解决步骤。
Git 基础概念与命令速查
Git 是目前最流行的分布式版本控制系统。本文介绍工作区/暂存区/仓库等核心概念、文件状态流转,并附上日常开发最常用的命令速查表,适合入门学习与日常查阅。
Git 安装、配置与仓库初始化
涵盖 Windows / macOS / Linux 下 Git 的安装方式、首次使用的全局配置(用户名、邮箱、别名等)、创建或克隆仓库的方式,以及 .gitignore 忽略规则的编写方法。
Git 基础工作流与协作场景
涵盖日常文件级操作(状态查看、暂存、提交、撤销、删除、重命名)与团队协作中的常见场景示例(个人提交、功能分支开发、同步主分支、误提交撤销等)。
运维与协作导读
本目录覆盖日常开发运维中的 Git 版本控制、Docker 容器化与 Nginx 服务网关,与 工程化 · Git、部署相关 等章节互补,提供完整的十阶段学习路径。
Git 配置
版本控制常用 .gitignore(忽略不需纳入仓库的文件)与 .gitattributes(统一换行、diff、合并策略等)。见 工程化概览。
Series
git
1 / 5