在git中创建补丁文件

wz1wpwve  于 2023-05-27  发布在  Git
关注(0)|答案(2)|浏览(210)

我想知道是否可以在git中创建补丁文件。我的意思是,如果我做了一些更改,然后修补程序文件应创建相对于文件名。
git diff在控制台上显示更改,但 * 是否可以将输出分隔到不同的文件中?*

k97glaaz

k97glaaz1#

git format-patch
假设你提交了一个aaa111,修改了foo.txtbar.txthello.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

wecizke3

wecizke32#

以下脚本为最近一次提交(HEAD~1)中修改的文件创建修补程序:

# 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

您可以修改修补程序文件名的生成,使其包含路径(不在当前目录中生成它们)。同样,为了在不同的提交之间生成差异,用适当的提交标识符替换这两个地方的HEAD~1

相关问题