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


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


11
2017-10-31 13:35


起源


可能重复 查找添加文件的提交 - phuclv


答案:


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

git log --oneline filename | tail -1

14
2017-10-31 13:45





你可以说:

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

3
2017-10-31 13:51



虽然这可能是你可以做的最好的“正常”情况(文件添加,然后重复修改),我不确定有一个好的解决方案,如果文件是例如添加,修改,删除,然后在以后重新引入,或者如果文件由于一系列重命名等而存在... - twalberg


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

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

1
2017-10-31 13:40





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

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

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

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

最后你还必须调整 --find-renames 阈。

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


1
2018-02-03 12:15