272

假设我有一个foo.js前段时间提交的文件。我想简单地找到首次添加此文件的提交。

在阅读了答案和我自己的修补之后,这对我有用

git log --follow --diff-filter=A --find-renames=40% foo.js
4

4 回答 4

401

这是更简单的“纯 Git”方式,不需要管道:

git log --diff-filter=A -- foo.js

检查文档。您可以对已删除、已修改等执行相同的操作。

https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203

我有一个方便的别名,因为我总是忘记它:

git config --global alias.whatadded 'log --diff-filter=A'

这使它变得如此简单:

git whatadded -- foo.js

$PWD下面的一行将递归搜索for 的子目录,foo.js而无需提供文件的绝对或相对路径,文件也不需要与$PWD

git log --diff-filter=A -- **foo.js
于 2012-11-28T04:52:11.157 回答
23
git log --follow --find-renames=40% --oneline -- foo.js | tail -n 1
于 2012-07-18T01:46:18.520 回答
5

以下内容可能你不感兴趣,但我认为它会在未来对你有所帮助,并且是 Git 中调试生态系统的一部分:

您可以使用git-blame来显示上次修改文件每一行的修订版和作者,尤其是文件注释。访问https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git

例如,

git blame -L 174,190  xx.py

-L 选项将注释的输出限制在第 174 行到第 190 行,因此您将看到文件 xx.py 从第 174 行到第 190 行的作者和提交哈希等

于 2017-01-24T18:49:43.387 回答
1

如果它是非编程方式的替代方法,那么这非常快。打开 gitk 图形用户界面。

gitk file

然后只需滚动到第一个提交

于 2021-08-24T14:24:51.983 回答