【问题标题】:removing the index from git diff logs从 git diff 日志中删除索引
【发布时间】:2021-07-31 19:23:24
【问题描述】:
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 的元数据。

【问题讨论】:

标签: git git-diff


【解决方案1】:

您可以使用sed 轻松做到这一点。 您可以使用, git diff | sed -n '5,$p' 或更一般地说
git diff | sed -n 'm,$p'

这意味着您说sedmth 行打印到文件的最后一行,-n 是禁止自动打印模式空间。

【讨论】:

  • 短:sed 1,5dtail +6
【解决方案2】:

有大量的文本处理工具,如果您想保留颜色,您必须告诉他们要查找的内容,这里有一个不依赖于特定计数而只是剥离 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 中,// 表示“再次搜索您搜索的最后一个模式”,并且在以第一行模式开头的第一行的模式有界范围内,在所有后续行开始作为最后一行模式。所以//!d 作为模式范围命令会删除不是第一行或最后一行的所有内容。

【讨论】:

    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多