我维护数据库迁移sql脚本文件。
我使用git tag标记我的提交。
假设我有1,1,11,1.2,1.3等标签
我只想在创建该文件后没有将标记添加到repo时修改(DB迁移sql脚本)文件。我怎样才能找到这个?
如果文件已创建,然后添加了(版本)标签,那么我不想修改该sql迁移脚本,而是我将添加一个全新的sql文件,它可以帮助我做我想要的。
答案 0 :(得分:9)
您可以使用git diff进行一些grepping,如下所示:
git diff --name-status your-tag..HEAD | grep ^A
这意味着:
“告诉我your-tag
和HEAD
之间的差异,显示文件名及其状态(已添加,修改,删除,创建)。”
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