例子

例子

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

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

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

例子

原始文件:

user1
user2
user3

然后我添加

user4
user5

然后提交。

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

user4
user5

答案1

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

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

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

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

答案2

借用--unified=0kaiko 的答案我得出:

git diff HEAD^ HEAD --unified=0 | tail +6 | sed -e 's/^\+//'

相关内容