我有一堆文件,我想知道它们被引入哪个版本。批量。这些版本标记为git。
在多个(~10)标签中快速检查大量(~80)文件数量的最简单方法是什么?
我可以编写一些自定义代码来检查目录中的每个标记,查找文件系统中存在的文件等。
是否有更快,更''git'的方法呢?
将git视为图形,我想纯实现是将历史记录跟踪到原始提交,然后转发到包含该提交的标记。但是,除非有一个工具已经这样做,否则这可能比检查标签更复杂。
答案 0 :(得分:2)
git tag --contains <commit>
打印给定提交“处于或”下游的所有标记。然后,您只需选择“第一个”此类标记(如果您的标记编号简单,例如,v1.7
v1.8
v2.0
这可能是微不足道的,如果它们像{{1}那样复杂} v1.7a
v1.7alpha
v1.7-0
v1.7.0
1 然后您需要一些其他方法来选择正确的方法,例如最小化图表“距离“来自所有候选标签。”
v1.7
打印第一个提交ID,其中给定的 git log --pretty=format:%H --diff-filter=A -1 -- path
为path
dded(您可能需要A
,或者可能是特定--no-renames
级别和/或-M
选项,用于调整git是否可以考虑重命名或复制文件,以查找提交。
我认为,将这两者结合起来可以很快到达那里。
1 我刚刚做了这些,我仍然不知道-C
是在v1.7
之前还是之后,也不知道是什么关系{ {1}}和v1.7.0
必须有这两个。我之前看到过像“真实”之类的疯狂东西 - 通常是在市场营销人员接触到东西之后 - 尽管我这样做只是为了说明。