在Git中如何查找特定标签之后添加了哪些文件?

9
我维护数据库迁移SQL脚本文件。
我使用git tag为我的提交打标签。
假设我有类似1、1.1、1.2、1.3的标签。
我只想在该文件创建后没有添加标签到仓库时修改(数据库迁移SQL脚本)文件。如何找出这一点?
如果文件已创建,然后添加了(版本)标签,则我不想修改该SQL迁移脚本,而是将完全新的SQL文件添加到帮助我实现目标的位置。

2
所以,基本上,您想要查看自上一个标签以来添加的文件列表,对吗? - choroba
@user494461,我注意到您已经添加了悬赏。您能否澄清一下您的问题,说明您正在寻找什么以及现有答案为什么不能解决它? - bcmcfc
2个回答

10
您可以通过以下方式使用 git diff 命令结合 grep 进行筛选:

git diff --name-status your-tag..HEAD | grep ^A

这意味着:

“获取 your-tagHEAD 之间的差异,显示文件名以及其状态(已添加、修改、删除和创建)。”

然后通过 grep 筛选出被添加的文件,它们会以大写字母“A”开头,--name-status 参数指定了显示文件状态。


2
为了自动查找最新的标签,您可以使用以下命令:
git describe $(git rev-list --tags --max-count=1)

然后,diff 命令将会给你列出两个提交之间新增的文件列表:

git diff --diff-filter=A --name-only $start_commit_id $end_commit_id

可以向diff过滤器添加更多选项,例如--diff-filter=AR将列出已经[A]dded加入和[R]enamed重命名的文件。 现在,如果将这两个命令组合在一起,您将获得自上一个标签以来的文件列表,无论上一个标签标签是什么:

git diff --diff-filter=A --name-only $(git describe
     $(git rev-list --tags --max-count=1)) HEAD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接