通常情况下diff,并git diff同时显示原始的和与修改后的行-和+分别。有什么办法,我只能过滤才能看到修改后的行吗?这将立即将要读取的行数减少 2 倍。
我假设
git diff test.yml | grep '^+' | less -R
Run Code Online (Sandbox Code Playgroud)
和
git diff test.yml | egrep '^+' | less -R
Run Code Online (Sandbox Code Playgroud)
有相同的结果。即他们会在文件中显示任何新添加的内容。但是egrep向我展示了整个文件。为什么呢?
无论如何,使用上述方法,我失去了颜色。有什么办法可以保持颜色吗?
egrep使用扩展正则表达式,所以
egrep '^+'\nRun Code Online (Sandbox Code Playgroud)\n匹配一个或多个行的开头(+这里是一个特殊字符),这是未定义的,可能会导致错误或各种行为,具体取决于实现egrep。
要匹配 \xe2\x80\x9c+\xe2\x80\x9d 字符,您需要对其进行转义:
\negrep '^\\+'\nRun Code Online (Sandbox Code Playgroud)\n要看到颜色,你需要强制git输出它们;默认情况下,它在管道时禁用它们:
git diff --color\nRun Code Online (Sandbox Code Playgroud)\n要过滤此内容,您需要考虑用于颜色的转义码:
\ngit diff --color ... | egrep '^.[[[:digit:]]+m\\+' | less -R\nRun Code Online (Sandbox Code Playgroud)\n