首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获取每个目录的git提交统计信息

可以使用git命令行工具结合一些脚本来实现。下面是一个可能的解决方案:

  1. 首先,使用git log --pretty=format:"%h,%an,%ad"命令获取所有提交的历史记录。该命令会返回每个提交的短哈希值、作者名和提交日期。
  2. 使用git ls-tree -r --name-only HEAD命令获取当前分支下的所有文件列表。该命令会返回每个文件的相对路径。
  3. 遍历文件列表,对于每个文件,使用git log --follow --oneline -- <file>命令获取该文件的提交历史。该命令会返回该文件的每个提交的简短信息。
  4. 解析每个提交的信息,统计每个目录的提交次数。可以使用脚本语言(如Python)来实现这一步骤。

下面是一个示例Python脚本,用于获取每个目录的git提交统计信息:

代码语言:txt
复制
import subprocess
import os

def get_commit_stats():
    commit_stats = {}

    # 获取所有提交的历史记录
    log_output = subprocess.check_output(['git', 'log', '--pretty=format:%h,%an,%ad'])
    commits = log_output.decode().split('\n')

    # 获取当前分支下的所有文件列表
    file_output = subprocess.check_output(['git', 'ls-tree', '-r', '--name-only', 'HEAD'])
    files = file_output.decode().split('\n')

    # 遍历文件列表,获取每个文件的提交历史
    for file in files:
        if file:
            # 获取文件的提交历史
            file_log_output = subprocess.check_output(['git', 'log', '--follow', '--oneline', '--', file])
            file_commits = file_log_output.decode().split('\n')

            # 解析每个提交的信息
            for commit in file_commits:
                if commit:
                    commit_info = commit.split(',')
                    commit_hash = commit_info[0]
                    commit_author = commit_info[1]
                    commit_date = commit_info[2]

                    # 获取目录路径
                    directory = os.path.dirname(file)

                    # 统计每个目录的提交次数
                    if directory in commit_stats:
                        commit_stats[directory] += 1
                    else:
                        commit_stats[directory] = 1

    return commit_stats

# 测试
stats = get_commit_stats()
for directory, count in stats.items():
    print(f"目录: {directory},提交次数: {count}")

这个脚本会输出每个目录的提交次数。你可以根据需要进一步扩展脚本,添加更多的统计信息或输出格式。

对于腾讯云相关产品,可以根据具体需求选择适合的产品。例如,如果需要存储和管理代码仓库,可以使用腾讯云的CodeCommit(https://cloud.tencent.com/product/ccr);如果需要构建和部署应用程序,可以使用腾讯云的Serverless Framework(https://cloud.tencent.com/product/sls)等。请根据具体场景和需求选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Git 修改已提交 commit 的信息

背景 由于 Github 和公司 Git 使用账号不一样,偶尔没注意,提交出错后就需要修改 commit 信息。...修改最后一次提交 commit 的信息 # 修改最近提交的 commit 信息 $ git commit --amend --message="modify message by daodaotest"....com>" 修改历史提交 commit 的信息 操作步骤: git rebase -i 列出 commit 列表 找到需要修改的 commit 记录,把 pick 修改为 edit 或 e,:wq...保存退出 修改 commit 的具体信息git commit --amend,保存并继续下一条git rebase --continue,直到全部完成 中间也可跳过或退出git rebase (--skip...-i HEAD~3 # 本地仓库没 push 到远程仓库的 commit 信息 $ git rebase -i # vi 下,找到需要修改的 commit 记录,```pick``` 修改为 ```

105.5K94
  • 如何优雅的编写git的提交信息

    这个时候如果有规范的提交将会减少不必要的麻烦。 概述 约定式提交规范是一种基于提交信息的轻量级约定。它提供了一组简单规则来创建清晰的提交历史;这更有利于编写自动化工具。...通过在提交信息中描述功能、修复和破坏性变更, 使这种惯例与 SemVer 相互对应。...的提交,表示引入了破坏性 API 变更(这和语义化版本中的 MAJOR 相对应)。破坏性变更可以是任意 类型 提交的一部分。...脚注中除了 BREAKING CHANGE: ,其它条目应该采用类似 git trailer format 这样的惯例。...其它提交类型在约定式提交规范中并没有强制限制,并且在语义化版本中没有隐式影响(除非它们包含 BREAKING CHANGE)。可以为提交类型添加一个围在圆括号内的范围,以为其提供额外的上下文信息。

    57910

    git 无法提交空目录 ? (.gitkeep 文件的作用)

    1. git 无法提交空目录? ---- 相信大家在项目中肯定会发现空目录是不会被 git 追踪 (track) 的,但这是为什么呢 ?...因为 git 最初的设计是用来索引文件的,所以 git 只关注文件,不关心目录,但是在有些场景下空目录也需要被追踪的 2. 如何提交一个空目录 ?...插件也能将其识别为 git 相关文件,在其文件名前显示 git 图标 是不是觉得这种解决方案感觉有点扯淡,为什么提交不了空目录,一定要放个文件才行 抱着疑惑的态度查找资料,在下面这个链接我找到解释 https...当一个空目录想要被 git 追踪,这个目录中的内容也需要被 git 跟踪时 .gitkeep 文件内容可有可无,只是起到一个占位符的作用,使目录能够被 git 提交到远程库 使用场景: 存放静态资源的...当一个空目录想要被 git 追踪,这个目录中的内容不需要被 git 跟踪时 使用场景: thinkphp6 框架的 runtime 目录 └── runtime └── .gitignore .

    1.1K10

    好的提交” vs “你的提交”:如何写出完美的 Git 提交信息

    “好的提交” vs “你的提交”:如何写出完美的 Git 提交信息 这么好的文章,点个赞价格关注吧❤❤~ 目录 为什么你应该在意 常见错误 七条规则 分支命名规范 案例分析 提示 为什么我们要在意编写清晰的提交信息...像“WIP”,“午饭时间”,“今天的代码结束”,“我累死了”,“周末愉快团队”和“第一个提交”这样的提交信息只会使你的 Git 日志混乱,使你难以理解你做出的重要提交,因为这些信息没有任何附加价值。...一个好的私人分支命名可以是:private/do-not-use-this 每个成为公共分支一部分的提交都必须体现一个精心制作、自包含、可逆且描述清晰的工作单元。...通过使用这些前缀,commit 历史成为了解每个 commit 性质的重要资源。 提示 记住要优先考虑通过你的 commit 信息进行清晰且有意义的沟通。...养成创建信息丰富、简洁且一致叙述风格的习惯吧。 *看完了是吧?那么再补补git命令吧* 《20 个每个开发者都应该知道的 Git 命令行技巧》 点个赞加个关注再走ok?

    17820

    Git 修改已提交的邮箱和用户信息

    实际过程中有的时候本地配置信息邮箱有误,导致git commit 提交作者的信息有误,这个时候就需要进行修改 git config --list user.email=xxx user.name...=xxx 修改git 配置信息 git config --global user.email xxx@xxx.com 修改已经提交的作者信息 网上给出答案都是自己写的脚本,有点过于繁琐,在逛segmentfault1...找到了答案: 首先找到修改commit 前一个,执行 git rebase -i commit id git会自动调用配置好的编辑器打开一个界面 ?...修改第一行数据(就是我们预期要修改的那条commit)的pick为edit,如下: ? 保存退出,可以看到如下结果: ?...这时候我们就可以通过git commit --amend来畅快的修改用户信息了,操作如下: git commit --amend --author="xxx " --no-edit

    6.6K20

    【Git系列】利用 Bash 脚本获取 Git 最后一次非合并提交的提交人

    脚本示例解析 下面是一个简单的 Bash 脚本示例,它演示了如何获取 Git 仓库中最后一次非合并提交的提交人,并将其存储在一个变量中,然后输出这个变量的值。 #!...echo "The last non-merge commit author is: $last_author" 这个脚本首先定义了一个变量 last_author,它通过 git log 命令获取当前分支最后一次非合并提交的提交人名字...git log 命令是 Git 中用来查看提交历史的命令,其中 -1 表示只显示一条提交记录,--no-merges 表示排除合并提交,--pretty=format:'%an' 用于格式化输出,只显示作者的名字...运行脚本:在包含 Git 仓库的目录中运行这个脚本,使用命令 ./get_last_author.sh。 请确保你的工作目录是 Git 仓库的根目录,否则 git 命令可能不会正常工作。...脚本的扩展 这个脚本可以根据需要进行扩展,以适应不同的场景。例如,你可以修改 git log 命令的参数来获取不同的信息,或者将输出格式化为 JSON 格式,以便于其他程序解析。

    7800

    怎么创建一个良好的Git提交信息

    译   原文:https://dev.to/chrissiemhrk/git-commit-message-5e21 ? 提交信息是对提交之前添加和更改的文件所做的更改的简短描述。...良好的提交信息不仅对你所参与的项目上其它的团队成员很重要,对你自己而言也很重要,你需要跟踪所有提交,并确切知道在提交期间发生的变动。...即使你开发的是个人项目,我也建议你开始养成编写良好的提交信息的习惯。...这是Udacity学生git 提交信息的例子Udacity Git Commit Message Style Guide feat: 少于50个字符的更改概括。...(我通常将它们放在提交信息的末尾) ---- 我目前使用git alias创建带有表情符号的漂亮提交消息,我的提交信息结构如下: [emoji] (scope): 例如:

    66030

    SQL 运行时性能统计信息的获取

    但今天要探讨的是另外一种方法,运行时获取性能统计信息。这些统计信息包含了编译及执行流失总时间,CPU 执行时间,磁盘 IO 开销。知道了这些有什么用之类的问题,请充分发挥你的想象力。...获取统计信息的做法: set statistics time on set statistics io on ? 统计信息都打出来了,熟快熟慢不难分解。 IO的读取和存储结构有紧密的关系。...明面上查一条数据,其实把很多数据页上的数据都拉到内存里了。这叫预读,Read Ahead. 获取运行时执行计划 有了性能统计信息,我们的矛头指向哪儿就有了明确的目标了。...针对存储过程的多段 SQL 来说,精确获取某段慢查询的执行计划,能更好的提供优化策略。 这时候你需要这命令: set statistics profile on ?...建议在原存储过程名后加上_pt (performance tunning 缩写), 在需要的 SQL 段落前加上 print ' xxx begins...' 以明确统计信息的步骤对象归属。

    81440

    在终端中查看漂亮的 Git 项目统计信息

    Onefetch[1] 是一个项目摘要器,具有 ASCII 艺术、语言细分、贡献者信息和其他详细信息。...下面是一个示例,显示 onefetch 针对自己的存储库运行: 该工具适用于任何 git 存储库,并生成由两部分组成的输出: 在左侧,可以看到项目主要使用的编程语言的 ASCII 艺术表示。...在右侧,可以看到有关项目的详细信息,包括它有多少个分支和标签、其主要作者是谁以及它包含多少行代码。...安装后,直接从仓库的根目录运行 onefetch: $ cd /path/to/repository $ onefetch 或者通过将存储库路径传递给命令: $ onefetch /path/to/repository...关闭显示在底部的调色板 --nerd-fonts 在语言旁边生成漂亮的图标 --no-title 隐藏第一行 此外,还可以配置某些字段的长度,例如 Authors (作者),并使用 -d 关闭您不想看到的任何字段

    8510

    使用 smem 命令获取内存使用统计信息的方法

    为了了解 Linux 或 macOS 上的内存使用情况,人们通常使用 top 或 htop。我很想看到一个单一的数字:一个进程占用了多少内存。但这些工具所显示的统计数据可能很难理解。...对于网页浏览器来说,它甚至更加复杂,因为它们经常运行许多独立的进程。它们在 top 输出中显示为一个长长的列表,每一个都有自己的单独指标。...Memory usage using htop smem 命令 幸运的是有 smem,另一个用于查看内存使用统计的命令行工具。...-c 开关指定要显示的列。我只对 pss 列感兴趣,它显示一个进程分配的内存。 -P 开关过滤进程,只包括那些名字里有 firefox 的进程。...-k 开关显示以 MB/GB 为单位的内存使用情况,而不是单纯的字节数。 -t 开关显示总数。 tail -n 1 过滤器只输出最后一行,也就是总数的地方。

    1.1K50

    技巧 - 如何好一个 Git 提交信息及几种不同的规范

    受 Growth 3.0 开发的影响,最近更新文章的频率会有所降低。今天,让我们来谈谈一个好的 Git、SVN 提交信息是怎样规范出来的。...在团队协作中,使用版本管理工具 Git、SVN 几乎都是这个行业的标准。当我们提交代码的时候,需要编写提交信息(commit message)。...而提交信息的主要用途是:告诉这个项目的人,这次代码提交里做了些什么。...对应的我修改的代码就是: package.json 和 yarn.lock 中的文件。一般来说,建议小步提交,即按自己的 Tasking 步骤来的提交,每一小步都有对应的提交信息。...由于 Git 的提交人只显示一个,所以写上两个的名字。当提交的人不在时,就可以问另外一个人修改的原因。

    1.1K70

    使用 Git Assistant IntelliJ 插件中的 AI 功能来生成提交信息

    在这篇文章中,我们将介绍如何使用 Git Assistant 插件中的 AI 功能来生成提交信息。...使用 AI 功能生成提交信息在配置完成后,你可以在左侧的 Commit 面板中看到 按钮,点击它来生成提交信息。...使用 Conventional Commits 模式生成的提交信息使用 Basic 和 Output template 模式生成的提交信息开启 Truncate excessive length 和 Relegate...excess to body 选项后,如果生成的提交信息长度超过限制,会自动截断并将多余的信息放到 body 中。...当前提交者信息展示你可以简单的在底部状态栏右侧看到当前仓库的提交者信息。尤其当你需要在多个仓库之间切换时,这个信息会让你避免设置了错误的提交者信息。

    44200
    领券