Git 分支管理与代码合并规范(master/dev 分支场景)

Git 分支管理与代码合并规范(master/dev 分支场景)

本文整理了 Git 日常开发中涉及 master(主分支)和 dev(开发分支)的核心操作流程,包含仓库初始化、分支开发、代码合并、冲突处理、代码回退等关键场景。

一、初始化仓库(首次使用)

场景1:直接克隆远程仓库(推荐,避免关联问题)

# 克隆远程仓库到本地(自动创建本地仓库并关联远程)git clone 远程仓库地址 # 示例:git clone https://github.com/用户名/仓库名.git# 进入仓库目录cd 仓库名 

场景2:本地先建仓库,再关联远程

# 本地初始化仓库git init # 添加文件并首次提交gitadd.# 暂存所有文件git commit -m "首次提交:初始化项目"# 关联远程仓库(远程仓库需提前在平台创建)git remote add origin 远程仓库地址 # 首次拉取远程历史(若远程有内容,必须执行,否则推送报错)git pull origin master --allow-unrelated-histories # 仅首次需要# 推送本地仓库到远程(-u 绑定上游分支,后续可直接 git push)git push -u origin master 

二、日常开发核心流程(dev 分支开发)

1. 分支准备(确保基础分支最新)

# 切换到本地 master 分支git checkout master # 拉取远程 master 最新代码git pull origin master # 切换到本地 dev 分支(若无则创建:git checkout -b dev)git checkout dev # 合并远程 master 到本地 dev(同步主分支更新)git fetch origin master git merge origin/master 

2. 本地开发与提交

# 查看文件状态(确认修改/新增文件)git status # 暂存修改(单个文件/所有文件)gitadd 文件名 # 暂存单个文件gitadd.# 暂存所有修改(推荐)# 提交到本地仓库(备注需清晰,仅包含单个功能点)git commit -m "功能:完成dev分支XX模块开发"

3. 推送本地 dev 到远程 dev

# 首次推送 dev 分支到远程(-u 绑定上游)git push -u origin dev # 后续修改后推送(已绑定上游,直接推送)git push 

4. 定期同步主分支更新(减少冲突)

# 在 dev 分支中拉取并合并远程 master 最新代码git pull origin master # 若出现冲突(终端提示 "Automatic merge failed"):# 1. 打开冲突文件,删除冲突标记(<<<<<<< HEAD、=======、>>>>>>> origin/master)# 2. 保留需要的内容,保存文件# 3. 标记冲突已解决并提交gitadd.# 标记所有冲突文件已解决git commit -m "合并master到dev,解决XX模块冲突"git push # 推送到远程 dev 分支

三、代码合并(dev → master)

场景1:合并 dev 分支指定提交到 master

适用于仅需合并 dev 分支中某一个提交(而非整个分支)的场景:

# 1. 切换到 master 分支并检查工作区git checkout master git status # 2. 暂存 master 分支未提交的修改(若有)git stash # 3. 拉取远程 master 最新代码git pull origin master # 4. 查找 dev 分支中需要合并的提交哈希值git checkout dev git log --oneline -n 10# 查看最近10条提交,复制目标哈希值(如 23919c9)# 5. 切回 master 分支,执行 cherry-pick 合并指定提交git checkout master git cherry-pick 23919c9 # 6. 若 cherry-pick 出现冲突,解决后提交gitadd.git commit -m "cherry-pick:合并dev分支23919c9提交到master"# 7. 推送合并后的 master 到远程git push origin master # 8. 恢复 master 分支暂存的修改(若有)git stash pop # 9. 验证提交结果(确认指定提交已合并)git log # 查看提交历史

场景2:合并整个 dev 分支到 master

适用于 dev 分支功能开发完成,需整体合并到主分支的场景:

# 1. 切换到 master 分支并拉取最新git checkout master git pull origin master # 2. 合并远程 dev 分支到本地 mastergit merge origin/dev # 3. 若出现冲突,解决后提交gitadd.# 标记冲突已解决git commit -m "合并dev分支到master,解决XX模块冲突"# 4. 推送 master 到远程(可测试完成后推送)git push origin master # 5. 验证合并结果git log # 查看提交历史,确认dev分支代码已合并

场景3:合并后清理(可选)

若 dev 分支功能已完全合并到 master 且无需保留,可清理分支:

# 删除本地 dev 分支git branch -d dev # 删除远程 dev 分支(确认不再需要时执行)git push origin --delete dev 

四、代码回退操作

需将本地指定文件回退到历史提交版本,并重新提交推送的场景:

# 1. 回退指定文件到历史提交版本(替换哈希值和文件路径)git restore --source=054f3b -- backend/app/api/v1/module_visualization/service.py # 2. 暂存回退后的文件gitadd backend/app/api/v1/module_visualization/service.py # 3. 提交回退操作git commit -m "回退:将XX文件恢复到054f3b版本"# 4. 拉取远程最新代码(避免推送冲突)git pull origin dev # 若操作的是dev分支# 5. 推送回退后的代码到远程git push origin dev 

五、关键注意事项

1. 推送前必拉取

无论推送到 master 还是 dev 分支,推送前必须执行 git pull origin 分支名,确保本地与远程同步,避免推送被拒绝(rejected 错误)。

2. 分支规范

  • 主分支(master):保持可运行状态,不直接修改;
  • 开发分支(dev):从 master 创建,用于日常功能开发;
  • 功能分支(可选):feature/功能名(从 dev 创建,开发独立功能);
  • 修复分支(可选):bugfix/问题名(从 dev 创建,修复开发分支问题)。

3. 提交与合并规范

  • 提交粒度:每次提交仅包含一个功能点(如“修复dev分支登录按钮样式”),避免大量无关修改;
  • 冲突处理:必须删除冲突标记(<<<<<<< / ======= / >>>>>>>),不确定保留内容时及时沟通;
  • 合并后提交:冲突解决后必须先 git commit 标记状态,推送可延后(如测试完成后)。

4. 数据安全

  • 定期备份:dev 分支开发到关键节点(如完成子模块),立即推送到远程 dev 分支;
  • 暂存恢复:使用 git stash 暂存未提交修改,合并完成后通过 git stash pop 恢复。

六、冲突处理专项

1. 冲突标记识别

冲突文件中会出现以下标记,需全部删除:

<<<<<<< HEAD (本地分支的代码) ======= (远程分支的代码) >>>>>>> origin/master 

2. 冲突处理流程

  1. 打开冲突文件,删除上述标记;
  2. 保留正确的代码内容(可与团队确认);
  3. 执行 git add . 标记冲突已解决;
  4. 执行 git commit 提交(备注需说明“解决XX冲突”);
  5. 推送当前分支到远程(如 dev → 远程 dev,master → 远程 master)。

总结

  1. 核心流程:dev 分支开发 → 定期同步 master 更新 → 合并(指定提交/整分支)到 master → 推送验证;
  2. 冲突关键:推送前必拉取、删除冲突标记、解决后先提交再推送;
  3. 分支原则:master 保持稳定不直接开发,dev 分支承接日常开发,提交粒度小且备注清晰。

Read more

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战 🏠💡 * 为什么选择RISC-V?🤔 * 系统整体架构概览 🧩 * 第一步:硬件选型与电路搭建 🔌 * 主控芯片选择 * 外设连接 * 第二步:开发环境搭建 🛠️ * 安装步骤(以Ubuntu为例) * 第三步:裸机驱动开发(Bare Metal)⚡ * 示例1:DHT11温湿度读取(Bit-banging) * 示例2:BH1750光照传感器(I2C) * 第四步:引入FreeRTOS实现多任务调度 🔄 * 第五步:Wi-Fi连接与MQTT通信 ☁️📡 * 连接Wi-Fi * MQTT客户端(使用esp-mqtt库) * 第六步:BLE本地控制(无需Wi-Fi)📱

By Ne0inhk
跨越天堑:机器人脑部药物递送三大技术路径的可转化性分析研究

跨越天堑:机器人脑部药物递送三大技术路径的可转化性分析研究

摘要 血脑屏障是中枢神经系统药物研发最核心的瓶颈。尽管相关基础研究层出不穷,但“论文成果显著、临床转化缓慢”的悖论依然存在。本文认为,突破这一瓶颈的关键在于,将研究重心从“单点机制”转向构建一条“可验证、可复现、可监管”的全链条递送系统。为此,本文提出了一个衡量脑部递送技术可转化性的四维评价标尺:剂量可定义、闭环可监测、质控可标准化、可回退。基于此标尺,本文深度剖析了当前最具潜力的三条技术路径: (1)FUS/低强度聚焦超声联合微泡; (2)血管内可导航载体/机器人; (3)针对胶质母细胞瘤(GBM)的多功能纳米系统。 通过精读关键临床试验、前沿工程研究和系统综述,我们抽离出可直接写入临床或产品方案的核心变量,识别了各自面临的最大转化风险,并提出了差异化的“押注”策略。分析表明,FUS+MB路径因其在“工程控制”上的成熟度,在近期(12-24个月)的转化确定性最高;血管内机器人代表了精准制导的未来趋势,

By Ne0inhk
【Part 4 XR综合技术分享】第一节|技术上的抉择:三维实时渲染与VR全景视频的共生

【Part 4 XR综合技术分享】第一节|技术上的抉择:三维实时渲染与VR全景视频的共生

《VR 360°全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360°全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏,帮助更多朋友进入VR 360°全景视频的世界! Part 4|XR综合技术分享 最后一Part了,我将分享一些关于当前常用的XR综合技术,内容涵盖三维实时渲染与全景视频的共生、多模态交互体验的融合,以及AI如何深度赋能XR应用,推动智能化发展。同时畅想通向全感知XR智能沉浸时代的未来,探索如何通过更先进的技术不断提升用户体验。毕竟,360°全景视频仅是XR应用中的冰山一角。 第一节|技术上的抉择:三维实时渲染与VR全景视频的共生 文章目录 * 《VR 360°全景视频开发》专栏 * Part 4|XR综合技术分享 * 第一节|技术上的抉择:三维实时渲染与VR全景视频的共生 * 1、VR内容形态的分化与融合 * 1.1 三维实时渲染的发展 * 1.2

By Ne0inhk
Rokid 手势识别技术深度解析:解锁 AR 无接触交互的核心秘密

Rokid 手势识别技术深度解析:解锁 AR 无接触交互的核心秘密

引言 在聊手势识别前,咱们先搞清楚:Rokid是谁?它为啥能把AR手势做得这么自然? Rokid是国内AR(增强现实)领域的“老兵”了,从2014年成立就盯着一个目标——让AR走进日常。你可能见过它的产品:能戴在脸上的“AR眼镜”Max Pro、能揣在兜里的“AR主机”Station 2、适合专业场景的“Station Pro”,这些设备不是用来“炫技”的,而是想让咱们摆脱手机、手柄的束缚,直接用手“摸”虚拟东西。 而手势识别,就是Rokid给AR设备装的“最自然的遥控器”——比如调大虚拟屏幕像捏橡皮一样捏合手指,翻页像翻书一样挥手。但不同设备、不同开发需求,需要搭配不同版本的SDK(软件开发工具包),这就像“不同型号的手机要装对应版本的APP”。 一、基础认知:先选对版本,避免开发走弯路 Rokid手势识别技术随SDK版本迭代持续优化,不同版本适配的Unity(开发工具)

By Ne0inhk