首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找添加了与glob模式匹配的文件的Git提交

查找添加了与glob模式匹配的文件的Git提交
EN

Stack Overflow用户
提问于 2022-03-18 11:52:12
回答 1查看 93关注 0票数 0

是否有Git命令允许查找添加了与模式匹配的文件的第一个提交?

例如,假设我希望找到首次添加与模式path/prefix/*/subpath/*匹配的文件的提交。我发现,可以通过组合git rev-list找到在固定路径下添加文件的提交(例如,path/prefix),迭代提交以列出通过git diff-tree添加的文件,并使用grep查找与给定模式匹配的文件(例如,/subpath/):

代码语言:javascript
运行
复制
for COMMIT in $(git rev-list \
                    --reverse \
                    --topo-order \
                    HEAD \
                    path/prefix)
do
  git diff-tree \
    --diff-filter A \
    --name-only \
    --no-commit-id \
    -r "${COMMIT}" |
  grep -q "/subpath/" && echo "${COMMIT}" && break
done

有更好的办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-18 12:10:56

“更好”在.运行程序,但是您可以使用git logheadtail来完成这一任务。我们从以下几个基本问题开始:

代码语言:javascript
运行
复制
git log <options> --diff-filter=A --format=%H -- 'path/prefix/*/subpath/*'

其中转储出所有散列ID(如果需要添加--topo-order,则添加--reverse )。然后,我们只需剪除最后一个(如果不使用--reverse)或第一个(如果使用--reverse):

代码语言:javascript
运行
复制
(the git log command) | tail -n 1

这通常会更快,因为git log可以快速消除非候选人,但有时可能会慢一些。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71526649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档