【发布时间】:2013-11-11 13:06:12
【问题描述】:
确定在哪个提交特定文件添加到存储库的最简单方法是什么?
【问题讨论】:
标签: git
确定在哪个提交特定文件添加到存储库的最简单方法是什么?
【问题讨论】:
标签: git
可能最简单的事情就是简单:
git log FILE | grep commit | tail -1 | awk '{ print $NF }'
【讨论】:
这很容易。以下命令显示了该文件已添加到 repo 的第一次提交。
git log --oneline filename | tail -1
【讨论】:
你可以说:
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
【讨论】:
Note that these are applied before commit ordering and formatting options, such as --reverse. 您的 1 次提交限制将在之前撤消应用
如果你真的想找到引入文件的提交,你必须考虑重命名。因此使用
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 阈值。
--find-renames[=]
如果生成差异,检测并报告每次提交的重命名。有关在遍历历史记录时跨重命名跟踪文件,请参阅 --follow。如果指定了 n,则它是相似性指数的阈值(即添加/删除的数量与文件大小相比)。例如,-M90% 表示如果超过 90% 的文件没有更改,Git 应该将删除/添加对视为重命名。如果没有 % 符号,则该数字将被读取为分数,前面有一个小数点。即,-M5 变为 0.5,因此与 -M50% 相同。同样,-M05 与-M5% 相同。要将检测限制为精确重命名,请使用 -M100%。默认相似度指数为 50%。
【讨论】: