GIT之【ERROR: commit count: 1, latest commit: xxxxx. missing Change-Id in message footer】

2023-05-16

项目场景:

在一次代码提交的时候,怎么也无法提交成功。【前情提要】该项目启动时,报错npm ERR! could not determine executable to run,然后我参考了这篇文章。将项目中的依赖升级并安装了husky…项目确实是正常启动了,但是提交代码的时候,让人头大的事情发生了,如下图所示

如图所示,changeId丢失。根据图中的建议,我重新安装了hook并commit --amend --no-edit,但仍然无法提交。
在这里插入图片描述
然后尝试了如下解决方案

  1. 原因:已经安装hook,本地做merge操作,此时默认生成的merge commit不带change-id。

解决方法: 这种情况下执行git commit --amend --no-edit一下就会自动生成change-id,进而正常push了。

  1. 原因:已安装hook,本地也不是做merge操作,依然报错。原因很可能是由于你的commit信息在编辑的时候写到了最后一行『change-id:xxxxx』的后面,push时的check会检查最后一行是否为change-id,如果夹在commit信息中间会被识别为commit信息的内容造成change-id缺失无法push。

解决方法:使用git commit --amend修改commit message信息,一定要保证change-id在最后。
但是我的这种情况里amend操作中该次提交没有commitId…因此无法像gerrit "missing Change-Id"这篇文章中一样补充commit信息。因为根本原因是确实没有commitI(枯辽)

  1. 原因:本地安装了【husky】插件,icode的hook很husky产生了冲突,导致hook添加不上change_id

解决方法: 对husky进行降级至5.x以下,之后重新安装一次hook(原因1的解决方法)。 附属husky的issue:https://github.com/typicode/husky/issues/538
虽然不是因为它,但是本次情况与husky有关。

后来去请教了我的mentor,实在太厉害了,就没有我mentor解决不了的问题。在这里插入图片描述
在这里插入图片描述

经过一番操作,发现了是.git文件夹下的config文件中多了hookPath = .husky的原因,将其删除即可。终于成功提交,留下感动的泪水。
在这里插入图片描述

Git Hooks 是如何工作的

每一个使用了 git 的工程下面都有一个隐藏的 .git 文件夹。挂钩都被存储在 .git 目录下的 hooks 子目录中,即大部分项目中的 .git/hooks。 在这里插入图片描述
在这里插入图片描述
Git 默认会放置一些脚本样本在这个目录中,除了可以作为挂钩使用,这些样本本身是可以独立使用的。所有的样本都是shell脚本,其中一些还包含了Perl的脚本。不过,任何正确命名的可执行脚本都可以正常使用 ,也可以用Ruby或Python,或其他脚本语言。

上图是git 初始化的时候生成的默认钩子,已包含了大部分可以使用的钩子,但是 .sample 拓展名防止它们默认被执行。为了安装一个钩子,你只需要去掉 .sample 拓展名。或者你要写一个新的脚本,你只需添加一个文件名和上述匹配的新文件,去掉.sample拓展名。把一个正确命名且可执行的文件放入 Git 目录下的 hooks子目录中,可以激活该挂钩脚本,之后他一直会被 Git 调用。

husky是什么?

husky 是一个 Git Hook 工具。husky 其实就是一个为 git 客户端增加 hook 的工具。将其安装到所在仓库的过程中它会自动在.git/目录下增加相应的钩子实现在pre-commit阶段就执行一系列流程保证每一个commit 的正确性。部分 cd在 commit stage执行的命令可以挪动到本地执行,比如 lint 检查、比如单元测试。当然,pre-commit阶段执行的命令当然要保证其速度不要太慢,每次 commit 都等很久也不是什么好的体验。

GitHook 工具 —— husky介绍及使用

在此给自己定一个学习git的计划~!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GIT之【ERROR: commit count: 1, latest commit: xxxxx. missing Change-Id in message footer】 的相关文章

随机推荐

  • gradle (v7.5) 使用

    gradle v7 5 使用 gradle 和 maven 都是项目构建工具 xff0c Gradle和Maven两种构建方式存在一些根本差异 Gradle基于任务依赖关系图 其中任务就是工作 xff0c 而Maven是基于固定的过程和线性
  • 麒麟/linux下安装MySQL,修改root用户密码报错汇总(附安装方法)

    本来用apt get一行代码装好的事情 xff0c 但是出现了大大小小的麻烦 xff0c 所以记录一下 xff0c 供有需要的朋友查看 一 Mysql的安装 apt span class token operator span get in
  • 一篇文章快速搞懂 AOP和SpringAOP

    往期相关文档 最全SpringAop切面 10分钟入门SpringAOP 读不在三更五鼓 xff0c 功只怕一曝十寒 郭沫若 文章目录 一 导言二 AOP2 1 代理模式2 2 AOP核心概念2 2 1 Aspect 切面2 2 1 1 P
  • 最通俗易懂的HashMap深度解析

    文章目录 导言Hash表什么是Hash表为什么要Hash表Hash表核心原理核心概念Hash表hash函数 常见冲突解决方法开放地址法 再散列法 再哈希法链地址法 xff08 拉链法 xff09 java HashMap原理浅析java H
  • SFTP连接失败问题解决小tips

    前几天安装了jumpserver之后 xff0c sftp服务莫名奇妙的挂了 xff0c 也不知道是不是这方面的原因 vsftpd服务检查没有问题 防火墙端口配置检查没有问题 端口监听检查没有问题 我们知道SFTP走的是SSH的端口 xff
  • Error:java: 服务配置文件不正确, 或构造处理程序对象

    在学习注解处理器使用的时候 xff0c 依据这个学习 xff0c 完成后build xff0c 报了个错误 Error java 服务配置文件不正确 或构造处理程序对象javax annotation processing Processo
  • 无自动化测试系统设计方法论

    灵活 敏捷 迭代 自动化测试 辩思 测试必不可少 想想看没有充分测试的代码 哪一次是一次过的 哪一次不需要经历下测试的鞭挞 不要以为软件代码容易改 就对于质量不切实际的自信 那是自大 不适用自动化测试的case 遗留系统 太多的依赖方 不想
  • 模仿 java Optional 设计 c# Optional

    模仿 java Optional 设计 c Optional Unity 环境下 using System span class token punctuation span using JetBrains span class token
  • 关于中台的思考和复盘

    数据中台可以做 xff0c 业务中台不能做 能力共享和聚合的入口可以做 强嵌入的业务中台不能做 中台 中台不是只能是微服务 xff0c 中台还可以是代码复用框架 xff0c 允许业务自己扩展 迭代code as service xff0c
  • 三范式分解算法

    三范式是BC范式的放宽 三范式条件 满足一个即可 gt 是平凡的函数依赖 除了子集和父集的函数依赖 大多的函数依赖都是非平凡的 是关系模式R的一个超码 属性集里的所有属性都被包含在 R的candidate key里 注意 的属性集里的所有元
  • 关系数据库设计 函数依赖 逻辑蕴含

    函数依赖 属性集 决定属性集 则称有函数依赖 to 逻辑蕴含 F能推出 原不直观存在于 函数依赖集F 中的函数依赖
  • 斯密特正交化(matlab)

    斯密特正交化 matlab 数学过程 伪代码如下 function b 61 Gram Schmidt Orthogonalization a row col 61 size a b 1 61 a 1 for i in 2 col for
  • autohotkey[启动][发送键击][click][常用窗口命令]

    启动程序或文档 run命令 run exe file in environment path Run Notepad 不在环境变量中的程序或文档 Run A ProgramFiles Winamp Winamp exe open file
  • 通过键盘移动鼠标光标 autohotkey

    通过键盘移动鼠标光标 MouseMove键 参数定义 MouseMove X Y Speed R 鼠标移动的目标位置的 x y 坐标 可以为 表达式 坐标相对于活动窗口Speed 移动鼠标的速度 xff0c 介于 0 xff08 最快 xf
  • 用Tkinter实现一个离线定时语音播报应用程序

    最近单位领导与我提起 xff0c 说要做一个语音播报功能程序 xff0c 意在定时提醒职工进行抄表工作 在下也是个刚毕业不久的小白 xff0c 从头开始学习Python 对于这个程序虽说小 xff0c 但也只是看起来而已 xff0c 在细节
  • 通过用户POI经纬度获取居住地的房价信息

    Arcmap处理数据 1 建立Map和GDB2 加载数据3加载地图4 导出为点数据5 过滤错误数据6 将过滤后的数据保存为新图层7 转换坐标系为38578 IDW插值9 绘制渔网图Fishnet10 Zonal Statistics As
  • 天干地支

    以下是天干地支的称呼 xff1a 天干地支简称 干支 xff0c 十天干 xff1a 甲 xff08 ji xff09 乙 xff08 y xff09 丙 xff08 b ng xff09 丁 xff08 d ng xff09 戊 xff0
  • spring知识总结

    什么是spring spring是一套提供IOC和AOP功能架 xff0c 为简洁开发提供的一套轻量级框架 主要包括一下几个模块 xff1a spring context xff1a 提供框架式的bean访问方式 xff0c 以及企业级任务
  • CentOS7安装MySQL8.0图文教程(有图有真相,亲测可用)

    下载 MySQL 所需要的安装包 网址 xff1a https dev mysql com downloads mysql Select Operating System 选择 Red Hat xff0c CentOS 是基于红帽的 xff
  • GIT之【ERROR: commit count: 1, latest commit: xxxxx. missing Change-Id in message footer】

    项目场景 xff1a 在一次代码提交的时候 xff0c 怎么也无法提交成功 前情提要 该项目启动时 xff0c 报错npm ERR could not determine executable to run xff0c 然后我参考了这篇文章