使用 git diff 仅显示没有语法的更改行

Mic*_*ael 4 diff git text-processing

我有一个文本文件中的用户名列表。我更新这个文件并提交它。我正在寻找一种方法来获取自上次提交以来的更改列表。

我根本不需要任何差异格式,我只想获得自上次提交以来每行一个用户名的输出(因为它们被添加到每个提交中)。

我找不到从输出中删除所有 git diff 语法的设置,因此它纯粹是仅添加的新行列表。

例子

原始文件:

user1
user2
user3
Run Code Online (Sandbox Code Playgroud)

然后我添加

user4
user5
Run Code Online (Sandbox Code Playgroud)

然后提交。

我希望能够进行 git diff 并仅查看:

user4
user5
Run Code Online (Sandbox Code Playgroud)

kal*_*iko 6

您可以结合前瞻/后瞻来 grep diff 输出:

git diff --unified=0 | grep -Po '(?<=^\+)(?!\+\+).*'
Run Code Online (Sandbox Code Playgroud)
  • (?<=^\+)是对以以下开头的行的积极回顾+
  • (?!\+\+)是一个否定的前瞻,以防止匹配以+++ a/path/to/file.

git选项--unified=0只是为了减少过滤删除差异上下文的行数,但它是可选的。

可能有更好的,我对 PCRE 不太流利。