与先前的标记相比,查找当前git标记中的新文件

时间:2018-02-19 16:45:10

标签: git version-control

例如,我在标记中包含以下文件:v1.0.1

a
b
c

和标签:v1.0.2文件如下:

a
b
c
d
e

现在我们如何获取最新标签的仓库中存在的新文件列表?

以上示例的答案应为:

d
e

1 个答案:

答案 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

你已经完成了。