如何生成仅显示另一个补丁文件中包含的文件差异的差异文件或补丁文件?

时间:2020-05-04 12:48:46

标签: bash git github diff patch

我正在把头撞到墙上,寻找一种简单的方法来完成此操作,但是却无法在网上找到任何东西,所以我想我会分享我想出的解决方案。

当您需要拆分特定的差异文件时,这很有用。

1 个答案:

答案 0 :(得分:0)

因此,当我在一个较大的公司项目中工作时,该问题需要分解为多个票证,尽管我正在同一个分支中使用多个文件,但我发现自己需要为每个票证创建单独的diff / patch文件。变化。每个补丁文件只需要包含特定文件的差异即可,您可以执行以下操作:

git diff master FILENAME_X FILENAME_Y FILENAME_Z (etc.)

但是,每次我需要生成补丁时,手动对每个文件进行操作都非常耗时,而且还包括我每次都忘记文件的可能性。

以下命令将创建包含在不同补丁文件中的所有文件的差异/补丁文件:

`cat NAME_OF_INPUT_DIFF.diff | grep "+++" | awk -F "+++ b/" '{if (NR == 1)printf "git diff master " $2; else printf " " $2}'` > NAME_OF_OUTPUT_DIFF.diff

cat NAME_OF_INPUT_DIFF.diff | grep "+++"将前一个差异仅分为带有已添加/修改的文件名的行,然后awk -F "+++ b/"将其仅分为已解析文件的名称,并去除前面的字符。其余的创建冗长的git命令以生成特定文件的差异,并将其全部包装在反引号中,以使其在执行时进行评估。然后> NAME_OF_OUTPUT_DIFF.diff将产生的差异输出到文件。

无论如何,我希望这对像我这样的人有所帮助!相当节省时间。