Git - 在创建文件时查找提交

时间:2013-10-31 13:35:39

标签: git

当某个特定文件添加到repo时,找到提交的最简单方法是什么?我猜它没有内置的git函数,不是吗?

4 个答案:

答案 0 :(得分:18)

很容易。以下命令显示该文件已添加到存储库的第一次提交。

git log --oneline filename | tail -1

答案 1 :(得分:3)

你可以说:

git log -1 --reverse --pretty=oneline filename

这应该是第一次提交。

来自git help

   -<n>
       Limits the number of commits to show. Note that this is a commit
       limiting option, see below.

   --reverse
       Output the commits in reverse order. Cannot be combined with
       --walk-reflogs.

要删除提交消息,请说:

git log -1 --format="%H" --reverse filename

答案 2 :(得分:2)

如果您确实想要找到引入文件的提交,则必须考虑重命名。因此使用

git log --follow --diff-filter=A -- <filepath>
  

- diff-filter = [(A | C | D | M | R | T | U | X | B)... [*]]
  仅选择添加(A),复制(C),删除(D),修改(M),重命名(R)...

的文件      

- 关注
  继续列出重命名以外的文件历史记录(仅适用于单个文件)。

最后,您还必须调整--find-renames阈值。

  

<强> - 发现 - 重命名[=]
  如果生成差异,则检测并报告每次提交的重命名。要在遍历历史记录时通过重命名跟踪文件,请参阅--follow。如果指定n,则它是相似性指数的阈值(即,与文件大小相比的添加/删除量)。例如,-M90%表示如果超过90%的文件未更改,Git应将删除/添加对视为重命名。如果没有%符号,则该数字将作为分数读取,并在其前面加上小数点。即,-M5变为0.5,因此与-M50%相同。同样,-M05与-M5%相同。要将检测限制为精确重命名,请使用-M100%。默认相似性指数为50%。

答案 3 :(得分:1)

可能最容易的事情很简单:

git log FILE | grep commit | tail -1 | awk '{ print $NF }'