我希望能在git diff中显示未跟随添加的删除。
也就是说,只显示没有后续
+
行的 -
行。这个有可能吗?git diff | awk '/^@/{ if(s) print p; s = 1; p="" }
s == 1 && /^\+/ { s = 0 } 1 {p = sprintf("%s\n%s", p, $0)}
END { if (s) print p }' s=2
git diff --numstat | awk '/^0/ {print $3}'
git-diff
的手册中:git diff | grep '^\(\+\+\+\|---\|-\|\+\)'
编写一个运行在步骤2中看到的命令并显示结果的程序。我知道这还不是解决方案,但您绝对需要先执行这一步,以确保输入和输出正常工作。
现在,让我们应用过滤。一个非常简单的过滤器可以通过这个算法来执行。
deletedLines <- empty
for each line
if (line starts with --- or +++) then add line to output
else if (line starts with -) deletedLines.add(line)
else
if (line starts with + but not with +++) then clear deletedLines
else add deletedLines to output
end for
git diff | grep '^\(+++\|---\|-\|+\)'
对我来说没有起作用。 - Geremia一种替代方案,只需一行代码,使用正则表达式即可。在这里,我使用了rg
,但任何支持多行匹配和反向匹配(分别为-U
和-v
)的grep工具都可以使用。
git diff | rg '^(\+ |- ).*' | rg -vU '^-(.*)\n\+(.*)\n'