在git中创建补丁文件

时间:2017-07-27 13:27:31

标签: git

我想知道是否可以在git中创建补丁文件。我的意思是如果我在几个文件中做了一些更改,那么应该根据文件名创建补丁文件。

git diff显示控制台上的更改,但是否可以分开  输出到不同的文件?

2 个答案:

答案 0 :(得分:3)

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

的更改

答案 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