从 git diff 日志中删除索引

removing the index from git diff logs

diff --git a/sample.py b/sample.py
index ce490c6..2e069ee 100644
--- a/sample.py
+++ b/sample.py
@@ -1,4 +1,6 @@
print("Hello world")
print("Sample project")
print("git log issue")
-print("git log issue demo")
\ No newline at end of file
+print("git log issue demo")
+print("different changes in log")
+print("sample git issues")

我想从 git 日志中删除前四行,它讲述了 diff 的元数据。

您可以使用 sed 轻松完成。 您可以使用, git diff | sed -n '5,$p' 或更普遍
git diff | sed -n 'm,$p'

这意味着你说 sedmth 行打印到文件的最后一行, -n 是禁止自动打印模式 space.

有大量的文本修改工具,如果你想保留颜色,你必须告诉他们要查找什么,这里有一个不依赖于特定计数但只是去除 [=] 之间的所有内容的工具12=] 和 @@.

(如果您是正则表达式的新手,它们可能会令人望而生畏,但下面的 barf 代码解析为 \x1b[^m]*m 与其他纯文本中的颜色转义相匹配,它周围的 ^()* 表示任何数字行首括号中的内容,因此 ^(\x1b[^m]*m)* 匹配行首任意数量的颜色转义。)

git log --color=always -p \
| sed -E '/^(\x1b[^m]*m)*diff/,/^(\x1b[^m]*m)*@@/ {//!d}'

剥离颜色处理会使代码更多,结果阅读起来更不愉快,

git log -p  --color=never -p \
| sed -E '/^diff/,/^@@/ {//!d}'

sed 中,// 表示“再次搜索您搜索的最后一个模式”,并且在以第一行模式开始的第一行的模式边界范围内, 在所有后续行中作为最后一行模式开始。因此,//!d 作为模式范围命令会删除除第一行或最后一行之外的所有内容。