我有一个文本文件中的用户名列表。我更新这个文件并提交它。我正在寻找一种方法来获取自上次提交以来的更改列表。
我根本不需要任何差异格式,我只想获得自上次提交以来每行一个用户名的输出(因为它们被添加到每个提交中)。
我找不到从输出中删除所有 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=0
kaiko 的答案我得出:
git diff HEAD^ HEAD --unified=0 | tail +6 | sed -e 's/^\+//'