git blame显示错误数据 整个项目仅展示同一提交人和提交日期
git blame全局显示同一提交人及提交日期的可能原因
- 项目曾执行全局历史重写操作
比如使用git filter-repo、git filter-branch这类工具批量修改过所有提交的提交人信息、提交时间,或是执行过全局的提交rebase/amend操作,会把所有提交的归属统一修改为同一个用户,git blame直接读取提交元数据,自然只会展示同一个提交人信息。 - 存在全局
.git-blame-ignore-revs配置
如果项目或者全局git配置中配置了blame.ignoreRevsFile指向一个包含了所有历史提交ID的忽略文件,git blame会把所有行的归属都落到最近的未被忽略的提交上,就会出现所有文件都显示同一个提交的情况。可执行git config --get blame.ignoreRevsFile检查是否存在该配置。 - 项目是从其他仓库完整拷贝后单次提交初始化的
如果当前仓库并非原仓库的克隆版本,而是有人把所有文件拷贝出来后仅做了一次初始提交推送到当前仓库,那所有文件的修改记录自然只会显示这一次提交的提交人和时间。可执行git log --oneline检查提交总数量,如果只有1条提交记录就是该原因导致。 - git配置中存在强制修改提交人信息的钩子
如果全局或者项目的gitpre-commit、commit-msg钩子被配置为强制覆盖所有提交的提交人、提交时间信息,后续所有新提交都会被统一修改为同一个用户信息,历史提交如果被重写过也会被统一替换。 - 仓库使用了浅克隆
执行克隆时如果加了--depth 1参数做了浅克隆,本地只会保留最近1次提交的记录,git blame读取不到更早的提交历史,就会把所有行的归属都算到这唯一的1次提交上。可执行git fetch --unshallow拉取完整历史后再验证blame结果是否恢复正常。
内容的提问来源于stack exchange,提问作者max
相关产品推荐
相关产品推荐

