# Enumerate the files modified on the desired commit
for file in $(git diff --name-only HEAD~1); do
# Generate the name of the patch file: replac '/' with '_'
# in the paths of the modified files and add the .patch termination
patch=${file//\//_}.patch
# Create one patch for each modified file
git diff HEAD~1 -- $file > $patch
done
2条答案
按热度按时间k97glaaz1#
git format-patch
假设你提交了一个
aaa111
,修改了foo.txt
、bar.txt
和hello.txt
。git format-patch -1 aaa111
它生成一个补丁,包括三个文件的变化。
git format-patch -1 aaa111 -- foo.txt
它生成一个补丁,其中只包含
foo.txt
的更改。git format-patch -1 aaa111 --stdout -- bar.txt > aaa111.bar.patch
它生成一个名为
aaa111.bar.patch
的补丁,其中只包含bar.txt
的更改更新2022-06-04
对于涉及二进制文件的提交,您应该将
--binary
添加到git format-patch
。wecizke32#
以下脚本为最近一次提交(
HEAD~1
)中修改的文件创建修补程序:您可以修改修补程序文件名的生成,使其包含路径(不在当前目录中生成它们)。同样,为了在不同的提交之间生成差异,用适当的提交标识符替换这两个地方的
HEAD~1
。