我想知道是否可以在git中创建补丁文件。我的意思是如果我在几个文件中做了一些更改,那么应该根据文件名创建补丁文件。
git diff
显示控制台上的更改,但是否可以分开
输出到不同的文件?
答案 0 :(得分:3)
说你已经提交了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
答案 1 :(得分:1)
以下脚本为最近一次提交(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
。