使用git apply -3完成三方合并后,如何保留元数据并继续操作?
Git补丁冲突解决后的后续操作与元数据保留方案
冲突解决后的核心操作
- 确认冲突文件已修复:执行
git status,确保原本处于U状态的文件变为modified状态 - 标记冲突已解决:将修复后的文件暂存,执行
git add <冲突文件名> - 完成补丁应用:这里确实没有类似
git am --continue的一键命令,必须通过提交完成,但直接默认提交会丢失原补丁的元数据,需要按下面的方法处理
保留原补丁的作者、日期等元数据
步骤1:从补丁文件提取元数据
打开你生成的补丁文件(比如0001-xxx.patch),找到以下字段:
Author:行:比如Author: John Doe <john@example.com>Date:行:比如Date: Tue Aug 22 14:30:00 2023 +0800Subject:行:这是原提交的说明,去掉开头的[PATCH]前缀就是提交消息
步骤2:带元数据提交
执行带参数的git commit命令,把提取到的信息填进去:
git commit --author="John Doe <john@example.com>" --date="Tue Aug 22 14:30:00 2023 +0800" -m "原提交的说明内容"
如果提交消息较长,也可以把补丁里的提交消息提取出来直接用:
# 提取补丁里的提交消息(跳过Subject行本身) git commit --author="John Doe <john@example.com>" --date="Tue Aug 22 14:30:00 2023 +0800" -F <(grep -A 100 'Subject:' 0001-xxx.patch | sed '1d')
关于提交方式的疑问
你不是只能用「普通git add+git commit」,但必须先执行git add标记冲突已解决,区别只在提交时是否添加元数据参数。如果直接用git commit不加参数,会用当前仓库配置的作者和当前日期,丢失原补丁的元数据。
内容的提问来源于stack exchange,提问作者curiousengineer
相关产品推荐
相关产品推荐

