在 git 中如何找出在特定标签后添加了哪些文件?

In git how to find out which files were added after a specific tag?

我维护数据库迁移sql个脚本文件。

我用 git 标记我的提交。

假设我有像 1、1.1、1.2、1.3 这样的标签

我只想修改一个(数据库迁移 sql 脚本)文件,但在创建该文件后没有向 repo 添加标签。我怎样才能找到它?

如果创建了文件然后添加了(版本)标签,那么我不想修改那个 sql 迁移脚本,而是添加一个全新的 sql 文件,这对我有帮助做我想做的。

您可以使用 git diff 和一些 grepping,如下所示:

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

这意味着:

"get me the differences between your-tag and HEAD, showing the file name and its status (added, modified, deleted, created). "

然后 grep 将其过滤为已添加的文件,--name-status 通过以大写 "A".

开头的行表示

要自动查找最新标签,可以使用以下命令:

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] 添加并 [R] 命名的文件。 现在,如果将这两个命令放在一起,您将获得自上一个标签以来的文件列表,而不管最后一个标签是什么:

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