当某个特定文件添加到repo时,找到提交的最简单方法是什么?我猜它没有内置的git函数,不是吗?
答案 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 }'