在 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
我维护数据库迁移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