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

时间:2015-04-23 09:03:46

标签: git database-migration flyway git-tag

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

我使用git tag标记我的提交。

假设我有1,1,11,1.2,1.3等标签

我只想在创建该文件后没有将标记添加到repo时修改(DB迁移sql脚本)文件。我怎样才能找到这个?

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

2 个答案:

答案 0 :(得分:9)

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

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

这意味着:

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

grep然后将其过滤到已添加的文件,--name-status通过以大写“A”开头来指示。

答案 1 :(得分:1)

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

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]已命名的文件。 现在,如果将两个命令放在一起,您将获得自上一个标记以来的文件列表,无论最后一个标记是什么:

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