我正在寻找一种通用的方式来尽可能地在提交中转换由git show
,git format-patch
甚至diff
生成的补丁文件。
我希望以下功能:
git format-patch
创建的,则应解析提交消息并将其用于新提交。git show
创建的,则应解析提交消息并将其用于新提交。在考虑创建新工具之前,我对现有解决方案最感兴趣。
以前的研究:
最接近的工具是git am
,但是#5和#6失败,因此它没有用处。另一方面,git apply
不会自己创建提交,至少会失败#2和#5。我不知道哪些工具比那两个更成功。
以下列格式应用RPM specfile中的补丁时:
Patch0: abc.patch
Patch1: xyz.patch
我目前正在使用以下sed命令构建脚本:
sed -re 's/.*: *(.*)/git apply \1 \&\& git add . \&\& git commit -am \1/'
这当然不会做#4和#5,因为它总是使用补丁文件名作为提交消息,并且#7可以解决。
答案 0 :(得分:0)
我知道您在询问diff
,git format-patch
和git show
,但所有这些都会转移更改,而不是提交。
有一个名为git bundle
的命令将转移提交,包括作者,时间和所有内容。您可以阅读docs。
基本上你将创建一个至少包含新提交的包文件,然后发送该文件。接收方将文件克隆到一个存储库,您可以合并,提取,重组或其他任何东西。