基于未合入PR创建增量patch的git管理方法

目录

    • 前言
    • 准备
    • 操作步骤
      • 精准移植基础PR到本地分支
      • 修改代码
      • 鸿蒙编译、调试、测试
      • 具体编译指令、测试步骤这里带过,这不是本文论述重点
      • 创建diff文件
      • 工作仓库应用最新patch
    • 总结

前言

作为程序员,多人协同开发同一个需求是正常的。即使是自己一个人搞需求,也会遇到自己所提的PR有多轮的检视,多次修改检视意见,提交到同一PR的场景。那么就存在基础PR在一段时间内始终处于未合入状态,而自己或其它合作人员需要基于基础PR(注意基础PR是动态变化,每打上新补丁,基础PR都会更新)做增量修改的情况。
今天就针对这种场景,如何提高开发/测试效率,进行讲解。测试环境是Windows10 wsl2,鸿蒙全仓docker镜像中以drivers_external_device_manager仓库的PR为操作对象。.
目的:在鸿蒙全仓下,将指定仓库的基础PR更新到本地,编译、多次修改,打patch(注意不用于
直接提交), 方便在合适的同名仓库提交最新修改。这样每次都是基于PR最新代码的动态增量修改
工具:git
基础仓库:基础PR所在的码云代码仓库

准备

码云账户密码 : niuma / xxxx
根据文章wsl2平台鸿蒙全仓docker编译环境快速创建方法创建鸿蒙容器开发环境
基准PR: https://gitee.com/openharmony/drivers_external_device_manager/pulls/6666

操作步骤

精准移植基础PR到本地分支

进入工作目录

cd /home/openharmony/drivers/external_device_manager
git checkout .  # 取消本地所有修改
# 鸿蒙全仓各个仓库默认是没有分支的。若有分支,说明本地仓库进行了修改。
git branch -D xxx # 删除不需要的临时分支

添加关联代码上游分支

git remote add niuma https://gitee.com/niuma/drivers_external_device_manager.git
git remote -v # 验证添加结果

拉取基础仓库master分支最新代码并创建相关分支 #

 git fetch niuma master  # 可以是任意分支。创建的主要目的是为了后面删除test分支用的。git checkout -b master  # 只需要创建一次git checkout -b test origin/master  # 从鸿蒙全仓上且测试分支。 如果有test 分支,先删除 git branch -D test。若不想删除,需要创建新的分支。

查询基础PR的commit ID

git log niuma/master -3 # 记住基础PR最新的commitID
root@1b0695311d6f:/home/openharmony/drivers/external_device_manager# git log zhangquanchao/master -3
commit af3cd0588f8e4d0875ae928c153a71f3f9d631ba (zhangquanchao/master)
Author: niuma <niuma@xxx.com>
Date:   Sat Jul 5 11:10:06 2025 +0800外设故障提醒框架能力补充fuzz用例Signed-off-by: niuma <niuma@xxx.com>commit a5ca975e34a3603329c5932da6627de5fe3c8752
Author: niuma <niuma@xxx.com>
Date:   Fri Jun 27 10:29:57 2025 +0800外设故障提醒框架能力之二:主体功能代码Signed-off-by: niuma<niuma@xxx.com>commit 9fe11a39a89fff2111bc1b685517da4aac7fcfa2 (HEAD -> test, origin/weekly_20250630, origin/master, m/master)
Merge: 84807fe 366badd
Author: openharmony_ci <111111@qq.com>
Date:   Mon Jun 23 03:23:44 2025 +0000!361 5.1.1告警清理enternalMerge pull request !361 from yyy/master

选择性应用基础PR到当前分支

 git cherry-pick {基础PR最新的commitID}root@1b0695311d6f:/home/openharmony/drivers/external_device_manager# git cherry-pick af3cd0588f8e4d0875ae928c153a71f3f9d631ba
[test aa2b2d2] 外设故障提醒框架能力补充fuzz用例Date: Sat Jul 5 11:10:06 2025 +08006 files changed, 150 insertions(+)create mode 100644 test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/BUILD.gncreate mode 100644 test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/corpus/initcreate mode 100644 test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/notifyusbperipheralfault_fuzzer.cppcreate mode 100644 test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/notifyusbperipheralfault_fuzzer.hcreate mode 100644 test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/project.xml

验证

git log -3 # 查看日志log是否同步上了```bash
root@1b0695311d6f:/home/openharmony/drivers/external_device_manager# git log -3
commit aa2b2d29e1034572f5e684f1676c6a378ca3afdc (HEAD -> test)
Author: niuma <niuma@xxx.com>
Date:   Sat Jul 5 11:10:06 2025 +0800外设故障提醒框架能力补充fuzz用例Signed-off-by: niuma <niuma@xxx.com>commit 9fe11a39a89fff2111bc1b685517da4aac7fcfa2 (origin/weekly_20250630, origin/master, m/master)
Merge: 84807fe 366badd
Author: openharmony_ci <111111@qq.com>
Date:   Mon Jun 23 03:23:44 2025 +0000!361 5.1.1告警清理enternalMerge pull request !361 from yyy/mastercommit 366badd2c3325f0086a5e56a9f2b0d54b8ca5fca
Author: yyy <yyy@zzz.com>
Date:   Sun Jun 22 03:33:20 2025 +0000update services/native/driver_extension_manager/src/ext_permission_manager.cpp.Signed-off-by: yyy <yyy@z.com>zzz.com

git show --stat # 检查PR修改是否一一对应,文件 、文件修改行数等, 与PR上"文件“子页面各个文件的信息比较。 一致表示同步完整
本地同步情况:

root@1b0695311d6f:/home/openharmony/drivers/external_device_manager# git show --stat
commit aa2b2d29e1034572f5e684f1676c6a378ca3afdc (HEAD -> test)
Author: niuma <niuma@xxx.com>
Date:   Sat Jul 5 11:10:06 2025 +0800外设故障提醒框架能力补充fuzz用例Signed-off-by: niuma <niuma@xxx.com>test/fuzztest/driver_extension_manager_fuzzer/BUILD.gn                                                            |  1 +test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/BUILD.gn                            | 43 +++++++++++++++++++++++++++++++++++++++++++test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/corpus/init                         | 16 ++++++++++++++++test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/notifyusbperipheralfault_fuzzer.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/notifyusbperipheralfault_fuzzer.h   | 19 +++++++++++++++++++test/fuzztest/driver_extension_manager_fuzzer/notifyusbperipheralfault_fuzzer/project.xml                         | 25 +++++++++++++++++++++++++6 files changed, 150 insertions(+)
root@1b0695311d6f:/home/openharmony/drivers/external_device_manager#

PR情况:


testfuzztestdriver_extension_manager_fuzzerBUILD.gn +1notifyusbperipheralfault_fuzzerBUILD.gn +43corpusinit +16notifyusbperipheralfault_fuzzer.cpp +46notifyusbperipheralfault_fuzzer.h +19project.xml +25

结论:经过对比文件修改数发现一致。移植成功。

修改代码

鸿蒙编译、调试、测试

具体编译指令、测试步骤这里带过,这不是本文论述重点

创建diff文件

root@1b0695311d6f:/home/openharmony/drivers/external_device_manager# git diff >> 2345.diff
root@1b0695311d6f:/home/openharmony/drivers/external_device_manager# ll
total 92
drwxr-xr-x 11 root root  4096 Jul  5 08:52 ./
drwxr-xr-x  9 root root  4096 Jul  3 09:39 ../
-rw-r--r--  1 root root  2258 Jul  5 08:52 2345.diff
-rw-r--r--  1 root root  4014 Jul  4 12:31 bundle.json
-rw-r--r--  1 root root   893 Jun 20 01:23 .clang-format
-rw-r--r--  1 root root   837 Jul  4 12:31 extdevmgr.gni
drwxr-xr-x  2 root root  4096 Jun 20 01:23 figures/
drwxr-xr-x  5 root root  4096 Jun 20 01:23 frameworks/
....

工作仓库应用最新patch

git apply --check 2345.diff
git apply 2345.diff

总结

通过补丁diff,减少人工差错,提高工作效率。代码编辑和编译都在鸿蒙全仓,减少代码移植效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87858.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git真正更新项目

背景 Fetch all remote后flutter代码都拉下来&#xff0c;都是Android项目应用不上&#xff1b;git–>update project才生效&#xff01;&#xff01;&#xff01;

AI时代如何拓展Web前端开发的边界

文章目录 1 从“页面仔”到“智能体验构建者”——前端的变与不变2 AI 如何重塑 Web 前端&#xff1a;从开发到用户体验的革命2.1 AI 赋能开发效率&#xff1a;前端工程师的“超级外挂”2.1.1 智能代码辅助与生成2.1.2 自动化测试与 Bug 定位 2.2 AI 提升用户体验&#xff0c;构…

chrome webdrive异常处理-session not created falled opening key——仙盟创梦IDE

注册表错误 :EKKOK:chromeinstallerut1 Lgoogle update settings.cc:26b falled opening key .( e\Update\ClientStateMedium 8A69D345-D564-463c-AFF1-A69D9E530F96} to set usagestats 连接超时 disconnected: received Inspector.detached eventfailed to check if windo…

【Java EE初阶 --- 多线程(进阶)】JUC

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 文章目录 JUC组件ReentrantLock与s…

免费静态网站搭建

免费静态网站搭建 内容简介搭建步骤GitHub仓库创建Jekyll安装使用Jekyll安装指南Jekyll快速搭建测试Jekyll后续玩法 内容简介 &#x1f6a9;Tech Contents&#xff1a;GithubPage/Jekyll/Custom URLs &#x1f431;GitHub Pages&#xff1a;静态网站托管服务&#xff0c;自动将…

MySQL 8.0 OCP 1Z0-908 题目解析(21)

题目81 Choose two. Examine the modified output: mysql> SHOW SLAVE STATUS\G *************************** 1. row ***************************Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 1612Seconds_Behind_Master value is steadily gro…

Web前端开发-HTML、CSS

文章目录是什么&#xff1f;HTML快速入门VS Code开发工具基础标签&样式新浪新闻-标题标题排版标题样式标题样式-1标题样式-2超链接新浪新闻-正文新浪新闻-正文排版新浪新闻-页面布局表格标签表单标签表单标签-表单项是什么&#xff1f; HTML快速入门 VS Code开发工具 基础标…

Vue.js状态管理: Vuex在大型项目中的实际应用

# Vue.js状态管理: Vuex在大型项目中的实际应用 ## 一、Vuex核心架构与大型项目适配 ### 1.1 状态管理&#xff08;State Management&#xff09;的本质需求 在复杂前端系统中&#xff0c;组件间的数据传递成本随项目规模呈指数级增长。根据Vue官方统计&#xff0c;超过500个组…

C++开发:结构体作为函数形参的值传递与引用传递

笔者定义了一个结构体变量&#xff0c;用于作为函数的形参&#xff0c;定义如下&#xff1a;struct CardParameters {float* Average nullptr;int averageSize 0; }; 需求描述&#xff1a;结构体变量作为函数的形参&#xff0c;在函数体中给指针变量分配内存空间并赋值&#…

【unity小技巧】在 Unity 中将 2D 精灵添加到 3D 游戏中,并实现阴影投射效果,实现类《八分旅人》《饥荒》等等的2.5D游戏效果

注意&#xff1a;考虑到unity小技巧的内容比较多&#xff0c;我将该内容分开&#xff0c;并全部整合放在【unity小技巧】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言实战1、在3D场景中&#xff0c;新建一些不同形状的2D图片2、我们新建一个Lit材质3…

Rust 内存结构:深入解析

Rust 的内存管理系统是其核心特性之一&#xff0c;结合了手动内存管理的效率与自动内存管理的安全性。以下是 Rust 内存结构的全面解析&#xff1a; 内存布局概览 ----------------------- | 代码段 (Text) | 只读&#xff0c;存储可执行指令 ----------------------…

【Chrome】‘Good助手‘ 扩展程序使用介绍

这是我开发的一款 Chrome 浏览器扩展程序&#xff0c;目前主要集成了‘AI对话‘&#xff0c;’总结页面’&#xff0c;‘基于页面问答’等功能&#xff0c;最近几天我也将写一篇介绍如何开发 chrome 扩展程序的博客&#xff0c;带你了解如何开发属于自己的插件。 注&#xff1…

基于mysql8.0.27部署1主2从的MHA集群

目录 一、mysql概述 1.1、关系型数据库 1.2、MySQL数据库 1.3、RDBMS术语 二、mysql的部署 2.1、拉取mysql 2.2、解压 2.3、 改名 2.4、 指定安装文件位置 2.5、 创建用户组 2.6、 修改mysql配置文件 2.7、创建data文件夹 2.8、更改mysql目录权限 2.9、初始化数据…

Highcharts 安装使用教程

一、Highcharts 简介 Highcharts 是一款使用 JavaScript 编写的前端数据可视化库&#xff0c;支持折线图、柱状图、饼图、面积图、散点图等多种图表类型&#xff0c;特点是渲染性能优秀、交互丰富、兼容性强&#xff0c;适合构建商业图表、统计报表等。 二、Highcharts 安装方…

Qt中的坐标系

Qt中的坐标系 1.坐标系概念2.数学坐标系VS计算机坐标系3.Qt坐标系4.像素 &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f680;系列专栏&#xff1a;【Qt的学习】 &#x1f4dd;&#x1f4dd;本篇内容&am…

C++原子类型操作与内存序

C原子类型操作与内存序详解 这段内容深入介绍了C标准原子类型的操作接口、内存序语义及使用规范。以下是关键知识点的分层解析&#xff1a; 一、原子类型的命名规则与类型映射 C提供两种方式表示原子类型&#xff1a; 模板特化形式&#xff1a;std::atomic<T>别名形式…

互联网摸鱼日报(2025-07-07)

互联网摸鱼日报(2025-07-07) 钛媒体 一场突如其来的“召回潮”&#xff0c;点燃中国制造的“灵魂拷问” 史上最大外卖补贴战开打&#xff0c;美团聚拢资源迎战“巨无霸” 1315亿加冕潮汕女首富&#xff0c;“最强打工妹”剑指港股 用14346字&#xff0c;讲透上市前必做的10…

七牛云Java开发面试题及参考答案

详述 Java 方法重载的机制与应用场景 Java 方法重载&#xff08;Method Overloading&#xff09;是面向对象编程中的重要特性&#xff0c;它允许同一个类中存在多个同名但参数列表不同的方法。这种机制为代码提供了灵活性和可读性&#xff0c;使得开发者可以用统一的方法名处理…

.net core mvc部署到win10本地的Ubuntu上

将一个 .NET Core MVC 应用部署到 Windows 10 上通过 WSL 安装的 Ubuntu 环境中&#xff0c;可以分为几个步骤来完成。以下是详细的指南&#xff1a;准备工作确保你的Ubuntu环境已安装.NET SDK&#xff1a;首先&#xff0c;你需要在WSL中的Ubuntu上安装.NET SDK。可以通过以下命…

机器人VLA模型(Vision-Language-Action)

一、VLA模型的技术架构与核心原理 VLA&#xff08;Vision-Language-Action&#xff09;模型的核心是构建视觉、语言、动作的多模态闭环系统&#xff0c;实现从感知到执行的端到端映射。其技术架构可细分为四个关键模块&#xff1a; 1. 多模态编码器 视觉编码器&#xff1a; …