当前位置: 首页 > backend >正文

git仓库和分支的关系

1️⃣ 仓库分支(Repository Branch)

  • 每个 Git 仓库都有自己的分支结构。

  • 分支决定你当前仓库看到的代码版本。

  • 示例:仓库分支只是局部修改,项目分支才是全局管理所有仓库分支的概念。

wifi_camera 仓库: - main - dev - feature_x

切换分支后,你看到的就是这个仓库的对应版本。


1️⃣ 本地分支(Local Branch)

  • 存在于你本地仓库的分支。

  • 你可以在上面自由修改、提交(git commit)。

  • 只有你本地可见,除非推送到远程仓库。

2️⃣ 远程分支(Remote Branch)

  • 存在于远程仓库(如 origin)的分支。

  • 远程分支通常以 remotes/origin/分支名 的形式显示。

  • 不能直接修改,需要先拉取(git fetch/git pull)到本地分支,再操作。

3️⃣ 本地分支与远程分支的关系

  • 跟踪关系(Tracking):本地分支可以设置跟踪某个远程分支。

    • 例如,你本地的 release/AC792N_SDK_V3 可能跟踪远程的 origin/release/AC792N_SDK_V3

    • 这样你执行 git pull 就会拉取远程分支的更新到本地分支。

  • 推送关系:本地分支修改后,可以 git push 到远程分支。

  • 同步

    • git fetch:更新远程分支信息,但不改变本地分支。

    • git pull:先 fetch,再把远程分支合并到本地分支。


🔹 举个例子
远程 origin:release/AC792N_SDK_V3feature/openvg本地:* release/AC792N_SDK_V3 (跟踪 origin/release/AC792N_SDK_V3)dev_temp (未跟踪远程)
  • 当你在本地 release/AC792N_SDK_V3 提交后,执行 git push 会把修改同步到远程的 origin/release/AC792N_SDK_V3

  • 当远程 origin/feature/openvg 有更新,你本地没有这个分支时,需要先 git checkout -b feature/openvg origin/feature/openvg 才能操作。


1️⃣ wifi_sdk 仓库

  • 这是 顶层仓库,也就是你 repo init / repo sync 拉下来的根仓库。

  • 它的内容通常包括整个项目的 整体结构,以及一些公共配置或顶层构建文件(比如 build/)。

  • wifi_sdk 仓库下,你看到的 release/AC792N_SDK_V3 分支就是属于 这个仓库 的分支。


2️⃣ wifi_sdk/apps/common 仓库

  • 这是一个 子仓库(sub-repo),通过 repo 管理工具纳入到 wifi_sdk 项目中。

  • 它只管理自己的一部分代码(比如 common 相关的应用或模块)。

  • 它有自己的分支和远程仓库,与顶层 wifi_sdk 仓库相对独立。

  • 你在 wifi_sdk/apps/common 下可以用 git branch -a 查看它自己的分支,而不是顶层仓库的分支。


3️⃣ 总结区别

项目类型分支归属内容
wifi_sdk顶层仓库release/AC792N_SDK_V3整个项目结构,build脚本等
wifi_sdk/apps/common子仓库(sub-repo)它自己的分支common模块相关的代码
  • 顶层仓库管理整体项目和子仓库列表

  • 子仓库只管理自己的一小部分代码,它的分支独立于顶层仓库。

  • repo list 就是列出顶层仓库下所有的子仓库及路径。


1️⃣ repo list

  • 作用:列出整个 项目下的所有 Git 仓库

  • 范围:整个项目,无论你当前在本地哪个子仓库目录下,都会显示项目中定义的所有仓库。

  • 信息:每个仓库的路径、仓库在远程的目录或来源(manifest 里定义的)。

  • 例子

wifi_sdk/apps/wifi_camera : wifisdk/wifi_camera/apps wifi_sdk/lib/media : department/firmware6/media

意思是项目里有 wifi_camera 仓库、media 仓库,它们分别对应这些路径。


2️⃣ git branch -a

  • 作用:列出 当前 Git 仓库 的所有分支。

  • 范围:仅限你当前所在的仓库。

  • 信息

    • 本地分支(* release/AC792N_SDK_V3 表示当前分支)

    • 远程分支(remotes/origin/master 等)


🔹 总结对比

命令范围显示内容用途
repo list项目级所有仓库及路径查看项目里有哪些仓库
git branch -a仓库级当前仓库本地和远程分支查看当前仓库有哪些分支

简单理解:

  • repo list → 看“项目里都有谁”

  • git branch -a → 看“我自己这个仓库里有哪些分支”

———————————————————————————————————————————

重定向:

remotes/m/wifi_video_master -> origin/wifi_video_master

这其实不是「两个分支」同时存在,而是一个符号引用(symbolic-ref),你可以理解成 别名/快捷方式

也就是说:

  • m/wifi_video_master 其实不是真的有分支,它只是一个「指针」,指向 origin/wifi_video_master

  • 你看到的 -> 就说明 m/wifi_video_master 这个名字只是 重定向到 origin/wifi_video_master

  • 所以你本地并没有真正 m/wifi_video_master 的对象,它只是一个别名。

m是一个仓库名,origin也是一个仓库名

———————————————————————————————————————————

http://www.xdnf.cn/news/18152.html

相关文章:

  • Linux GPIO子系统中开漏模式软件仿真机制的深度分析
  • 【深度学习计算性能】06:多GPU的简洁实现
  • 树状数组/差分数组/线段树/莫队算法介绍
  • 政务窗口服务满意度调查:服务型政府建设赋能方案(北京市场调研)
  • 2025年12大AI测试自动化工具
  • 电子电气架构 --- 软件项目风险管理
  • 「内力探查术」:用 Instruments 勘破 SwiftUI 卡顿迷局
  • Android Coil 3拦截器Interceptor计算单次请求耗时,Kotlin
  • 软件测试-Selenium学习笔记
  • Node.js 在 Windows Server 上的离线部署方案
  • Linux系统安全补丁管理与自动化部署研究与实现(LW+源码+讲解+部署)
  • 2.Kotlin 集合 List 所有方法
  • 云原生俱乐部-mysql知识点归纳(3)
  • 告别 Dify 工作流,让 NL2SQL 落地更直接
  • HarmonyOS 中的 泛型类和泛型接口
  • PHP如何使用JpGraph生成折线图?
  • 摄像头模块在运动相机中的应用
  • Java代码审计-SE-4
  • 微服务集训整理
  • Java开发面试实战:Spring Boot微服务与数据库优化案例分析
  • Shopee本土店账号安全运营:规避封禁风险的多维策略
  • C/C++ 常见笔试题与陷阱详解
  • 深入理解Prompt构建与工程技巧:API高效实践指南
  • 网络编程day2
  • Windows 8.1 补丁 KB2919355 安装方法 详细步骤
  • 管理本地用户和组:红帽企业 Linux 系统安全的基础
  • Python数据容器(列表,元组,字典) 从入门到精通
  • ​Kali Linux 环境中的系统配置文件与用户配置文件大全
  • 无人机基础知识
  • 力扣70:爬楼梯