假设我有一个文件foo.js,这是一段时间前提交的。我想 只需找到第一次添加该文件的提交。
在阅读了答案和我自己的修补之后,这对我来说是有效的
git log --follow --diff-filter=A --find-renames=40% foo.js
假设我有一个文件foo.js,这是一段时间前提交的。我想 只需找到第一次添加该文件的提交。
在阅读了答案和我自己的修补之后,这对我来说是有效的
git log --follow --diff-filter=A --find-renames=40% foo.js
当前回答
以下内容可能不是你感兴趣的,但我认为它在未来会对你有所帮助,并且是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行的作者和提交散列等
其他回答
git log --follow --find-renames=40% --oneline -- foo.js | tail -n 1
这里有一种更简单的“纯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的子目录中搜索foo.js,而不需要提供文件的绝对或相对路径,文件也不需要与$PWD在同一个目录中
git log --diff-filter=A -- **foo.js
以下内容可能不是你感兴趣的,但我认为它在未来会对你有所帮助,并且是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行的作者和提交散列等
如果这是一种非编程方式的替代方法,这是非常快的。打开gitk GUI。
gitk file
然后滚动到第一次提交