【发布时间】:2016-04-19 16:29:36
【问题描述】:
如何在之前删除的文件上运行git blame 是一个常见问题(使用git rm)。如果您只是使用旧文件名运行它,那么它会给出与从未存在的文件相同的错误:
% git init
% echo 1 >a
% git add a
% git commit -m.
% echo 2 >a
% git add a
% git commit -m.
% git rm a
% git commit -m.
% git blame a
fatal: cannot stat path 'a': No such file or directory
% git blame z
fatal: cannot stat path 'z': No such file or directory
(为了简洁起见,git 对早期命令的响应已被省略。)
一个常见的解决方案是查看git log --stat 以查找删除文件的修订版。然后,您可以将该修订的父级传递给git blame:
% git blame 11144~1 -- a
97da6499 (Ed Avis 2016-01-14 11:00:40 +0000 1) 2
这可行,但是像这样手动搜索日志很麻烦。有没有办法告诉 git '我想查看在过去的任何修订中曾经被称为 a 的任何文件'?我希望有一些简单的东西,比如
% git blame --any-file-named a
这将自动检查存储库的整个历史记录以查找具有该名称的文件。
【问题讨论】: