git diff 规定文件之间有额外的空行
git diff dictate extra blank line between files
有什么方法可以指定 git diff
输出的格式吗?当有多个文件时,我希望在每个文件开始之前有一些额外的空行——也就是说,在每次它说
之前
diff --git a/filename b/filename
这将帮助我找出各个文件。现在我正在进入 BBEdit,然后进行全局查找和替换,它很快就变旧了。我真的不需要在这里使用 diff 工具,我想;我只想稍微控制一下文本输出。 (告诉我如何将其通过 sed
或其他方式进行传输可能会很酷,尽管我有点希望 git diff
本身可以接受某种格式选项。)
这是一个使用 sed 和 bash/zsh 的答案(作为回答 here):
# include a '\' followed by a linefeed ('\n') in the replace pattern of sed :
git diff --cached | sed -e 's/^diff --git/'$'\\ndiff --git/'
(注意:上面命令的 bash/zsh 特定部分位于用于在命令行上插入实际 \<lf>
的语法中:$'\\n'
将转换为 bash/zsh 中的那个,但可能不会转换为其他 shells -- 例如:cmd.exe 或 powershell。您可以选择另一种插入方式sed 模式中的 \<lf>
,例如通过从文件而不是命令行读取模式,或者通过选择 shell 特定方式在命令行中插入这些字符)
如果您想保留 git diff
显示的颜色,一种方法是:
git diff --cached --color=always |\
# spot the escape sequence that sets "diff --git" in bold, and print it in the output
sed -e 's/^\(..1m\)diff --git/'$'\\n\1diff --git/'
有什么方法可以指定 git diff
输出的格式吗?当有多个文件时,我希望在每个文件开始之前有一些额外的空行——也就是说,在每次它说
diff --git a/filename b/filename
这将帮助我找出各个文件。现在我正在进入 BBEdit,然后进行全局查找和替换,它很快就变旧了。我真的不需要在这里使用 diff 工具,我想;我只想稍微控制一下文本输出。 (告诉我如何将其通过 sed
或其他方式进行传输可能会很酷,尽管我有点希望 git diff
本身可以接受某种格式选项。)
这是一个使用 sed 和 bash/zsh 的答案(作为回答 here):
# include a '\' followed by a linefeed ('\n') in the replace pattern of sed :
git diff --cached | sed -e 's/^diff --git/'$'\\ndiff --git/'
(注意:上面命令的 bash/zsh 特定部分位于用于在命令行上插入实际 \<lf>
的语法中:$'\\n'
将转换为 bash/zsh 中的那个,但可能不会转换为其他 shells -- 例如:cmd.exe 或 powershell。您可以选择另一种插入方式sed 模式中的 \<lf>
,例如通过从文件而不是命令行读取模式,或者通过选择 shell 特定方式在命令行中插入这些字符)
如果您想保留 git diff
显示的颜色,一种方法是:
git diff --cached --color=always |\
# spot the escape sequence that sets "diff --git" in bold, and print it in the output
sed -e 's/^\(..1m\)diff --git/'$'\\n\1diff --git/'