例如,我在标记中包含以下文件:v1.0.1
a
b
c
和标签:v1.0.2
文件如下:
a
b
c
d
e
现在我们如何获取最新标签的仓库中存在的新文件列表?
以上示例的答案应为:
d
e
答案 0 :(得分:2)
标记标识提交。提交包含一个快照 - 一组文件。
git diff
比较文件集,包括两个不同的快照。只需将git diff
指向两个特定的提交 - 两个快照 - 它将为您提供将一个转换为另一个的说明:
git diff v1.0.1 v1.0.2
唯一的问题是默认情况下git diff
会向您显示完整说明,而您想知道受影响的文件。幸运的是git diff
有旋钮,您可以转而减少或更改其输出,例如--name-status
:
$ git diff --name-status v1.0.1 v1.0.2
M Makefile
M debian/changelog
M quote.c
M server-info.c
前面的“状态”字母告诉你Git认为文件发生了什么:M
表示“已修改”,“D”表示“已删除”,依此类推。对于您的特定情况,最有趣的是A
,这意味着“已添加”:文件位于第二次提交中,但不在第一次提交中。
因此,您希望从此列表中选择状态为A
的文件(在我的示例中没有,但在您的示例中会有一些)。幸运的是git diff
也有一个旋钮:
git diff --diff-filter=A <options> <arguments>
您可以保留--name-status
,以便它不会显示文件的内容,但这仍会显示字母A
;因此,您需要--name-only
打印 名称:
git diff --name-only --diff-filter=A v1.0.1 v1.0.2
你已经完成了。