2012-07-18 76 views
126

假设我有一个文件foo.js,它是前一段时间提交的。我想 只需找到此文件第一次添加的提交。查找已添加文件的提交

阅读的答案和我自己的修修补补之后,这个工作对我来说

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

当,兄弟。你的个人资料中有1个好名声,并且有很多好东西。你一定是做了一些蠢事才能在某个地方获得喜爱。 – 2017-06-13 05:53:06

+0

看起来,他的账户“暂时”中止了几年。 – msanford 2018-01-18 20:01:43

回答

203

下面是简单的, “纯混帐” 的方式做到这一点,没有管道需要:

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

检查文档,你可以做同样的事情删除,修改等。

我有一个方便的别名,因为我总是算了吧:

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

这使得简单:

git whatadded -- foo.js 
+17

+1!然而,我的文件是在一个子文件夹中,所以只有在我在前面添加了一个星号'git log --diff-filter = A - * subfolder/foo.js' – Geo 2013-08-16 17:40:09

+2

这对于合并的文件是如何工作的其他分支,但是这些分支不一定被添加到合并的用户合并的分支中? – g33kz0r 2014-01-22 18:47:09

13
git log --oneline -- foo.js | tail -n 1 
+1

我很高兴有' - followlow'。 – 2012-08-19 17:31:53

0

下也许不是就是你的兴趣,但我认为它会帮助你在未来,在Git的调试生态系统的一部分:

还可以使用Git怪显示什么版本和作者上次修改文件的每一行especifiqly文件批注,请访问https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git

前。 git blame -L 174,190 xx.py

+0

你能解释一下每个操作数是做什么的?我意识到你已经提供了一个链接到相关的RTFM,但一点点澄清会让你的帖子成为一站式商店。 – rossmcm 2017-02-06 22:25:54

+0

正如Pro-Git的书所说,如果您追踪代码中的错误并想知道它何时被引入以及为什么,文件注释通常是您最好的工具。它向你展示了什么是最后修改任何文件的每一行的提交,因此我展示的这个例子使用-L选项将输出限制在第174行到第190行,最后一项是你想检查的目标文件xx.py)在这种情况下是一个python文件@rossmcm – Reidel 2017-02-23 16:46:09