通用技术 [git] 基于源码改动生成 patch 包的方法

bauul · 2017年12月22日 · 最后由 黑水 回复于 2017年12月23日 · 1299 次阅读

缘由

在做 APP 自动化测试时,我们基于源码做了一些修改,比如:

  • 增加 espresso web 依赖
  • 增加 uiautomator2.0 server 代码
  • 修改配置文件 而这些代码不能提交到开发的主分支,维护在测试代码中, 当执行新的测试任务时,拉取最新的开发代码至本地,打上 patch 包再打包测试

打 patch 包的方法

# 先在本地提交增加的代码,不执行push,是不会推到服务器的
git commit
# 查看提交记录
git log

commit 482d69fc6ad435cee2129895d88aa78f2e46333f
commit e3980407d2d6e143a04daed9ca3d9f94599fbd72

打 patch 包

git format-patch 本次提交前一次commit的序列号(这里即e3980407d2d6e143a04daed9ca3d9f94599fbd72) -o /e/patches

使用 patch 包

git apply --reject /e/patches/0001.patch

问题

三月份修改了源码,四月份又有新的修改,这样岂不是打出两个 patch 包来?未来可能更多

diff 方法

commit d16286f49d13a0a687cab4640fdf60d73e080889
commit 482d69fc6ad435cee2129895d88aa78f2e46333f
commit e3980407d2d6e143a04daed9ca3d9f94599fbd72

git diff e3980407d2d6e143a04daed9ca3d9f94599fbd72 d16286f49d13a0a687cab4640fdf60d73e080889 > autotestpatch

使用 diff 方法可以将多次修改打出一个 patch 包来

备注

以上命令在 git bash 中执行

交流

请教大家在实际中是怎么做的?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

不能提交到开发的主分支

为啥?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册