手动编辑git add --patch的hunk出现patch failed错误如何解决?
git add --patch编辑hunk报错解决方案 问题根源
你遇到的patch does not apply报错核心是编辑后的hunk上下文行和git暂存区的基准内容不完全匹配,排除空格转制表符的问题后,大概率是编辑时不小心改动了上下文行的内容,或是行尾空白/换行符被编辑器自动修改。
你对hunk头的判断是正确的,该场景下不需要修改hunk头:@@ -43,4 +44,7 @@中-43,4代表基准版本从43行开始共4行,+44,7代表修改后从44行开始共7行,你编辑后的hunk总行数仍然匹配该数值,无需调整。
可直接复现的操作步骤
按以下流程操作即可避免报错:
- 先执行
git reset HEAD package.json清空当前文件的暂存改动,避免之前的错误操作残留影响 - 重新执行
git add --patch package.json,待进入hunk编辑页后,仅做两个修改,不要触碰其他任何行:- 将
- "uuid": "^8.3.2"行首的-替换为空格,该行其余内容(包括末尾的逗号、空白字符)原封不动保留,不要做任何修改 - 直接删除整行
+ "uuid": "^8.3.2",,其余三个带+的依赖行完全保留
- 将
- 保存退出前如果使用Vim编辑器,先执行
:set noexpandtab nolist关闭自动缩进替换、隐藏不可见字符规则,避免Vim自动修改行内容后匹配失败。
备用替代方案
如果编辑hunk还是报错,可以不用手动编辑hunk:
在git add -p询问是否添加当前hunk时,输入s指令将大hunk拆分为更小的子块,拆分后如果uuid的改动和其他三个新增依赖的改动刚好分到不同子块,直接选择添加对应子块即可。
内容的提问来源于stack exchange,提问作者fillipvt
相关产品推荐
相关产品推荐

