查找提交文件的提交

195 git commit git-log git-commit

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

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

git log --follow --diff-filter=A --find-renames=40% foo.js
Run Code Online (Sandbox Code Playgroud)

ste*_*erd 296

这里有更简单,"纯粹的git"方法,无需管道:

git log --diff-filter=A -- foo.js
Run Code Online (Sandbox Code Playgroud)

检查文档,你可以对Deleted,Modified等做同样的事情.

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

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

git config --global alias.whatadded 'log --diff-filter=A'
Run Code Online (Sandbox Code Playgroud)

这使它变得如此简单:

git whatadded -- foo.js
Run Code Online (Sandbox Code Playgroud)

  • +1!但是,我的文件位于子文件夹中,所以只有在我在前面添加了一个星号`git log --diff-filter = A - *subfolder/foo.js后才能使用. (25认同)
  • 这对于从其他分支合并但未必添加到由执行合并的用户合并的分支的文件有何作用? (3认同)
  • 非常好,您知道您也可以将“--”放在别名中,这样您就可以编写“git whatadded foo.js”? (2认同)

Set*_*son 16

git log --oneline -- foo.js | tail -n 1
Run Code Online (Sandbox Code Playgroud)

  • 我很高兴有`--follow`。 (2认同)
  • 接受的解决方案对我不起作用,但它确实有效。谢谢! (2认同)

Rei*_*del 8

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

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

例如,

git blame -L 174,190  xx.py
Run Code Online (Sandbox Code Playgroud)

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