如何解决从 git diff 日志中删除索引
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'
这意味着您说 sed
从 mth
行打印到文件的最后一行,而 -n
是禁止自动打印模式空间。
有大量的文本处理工具,如果您想保留着色,您必须告诉他们要查找的内容,这里有一个不依赖于特定计数而只是去除 {{1} } 和 diff
。
(如果您不熟悉正则表达式,它们可能会令人生畏,但下面的 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
表示“再次搜索您搜索的最后一个模式”,并且在作为第一行模式开始的第一行的模式有界范围内,在所有后续行都以最后一行模式开始。因此 //
作为模式范围命令会删除除第一行或最后一行之外的所有内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。