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

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.dtcms.com/a/338725.html

相关文章:

  • 主从切换是怎么保证数据一致的?从库为什么会延迟
  • 理解JavaScript中的函数赋值和调用
  • AAA服务器技术
  • 算法训练营day55 图论⑤ 并查集理论基础、107. 寻找存在的路径
  • 谷歌为什么要将Android的页面大小(Page Size)从传统的4KB升级至16KB
  • 解决 UniApp 自定义弹框被图片或 Canvas 覆盖的 Bug
  • 云原生俱乐部-mysql知识点归纳(3)
  • 2 . 大纲
  • 常用植被物候提取方法 (TIMESATE/R语言/Python)-4.0
  • QChart智能坐标轴
  • 【3-3】流量控制与差错控制
  • Linux的ALSA音频框架学习笔记
  • 为单片机专门定制的Unicode字库和API接口
  • 18650锂电池自动化生产线:智能集成提升制造效能
  • Datawhale工作流自动化平台n8n入门教程(一):n8n简介与平台部署
  • 机器学习深度学习 所需数据的清洗实战案例 (结构清晰、万字解析、完整代码)包括机器学习方法预测缺失值的实践
  • 基于 PyTorch 模型训练优化、FastAPI 跨域配置与 Vue 响应式交互的手写数字识别
  • 【Qt】线程池与全局信号实现异步协作
  • 【qml-5】qml与c++交互(类型单例)
  • JVM垃圾收集器
  • Linux重置 root 密码:从原理到实操
  • 免费OCR工具支持哪些文档格式转换
  • 8.19打卡 DAY 46 通道注意力(SE注意力)
  • RPC高频问题与底层原理剖析
  • 在VSCode中进行Vue前端开发推荐的插件
  • 基于C语言基础对C++的进一步学习_知识补充、组合类、类中的静态成员与静态函数、类中的常对象和常成员函数、类中的this指针、类中的友元
  • Laya的适配模式选择
  • 使用 Ansys Discovery 探索外部空气动力学
  • 龙虎榜——20250819
  • python学习打卡day38