从Git获取单个文件版本

时间:2015-01-13 09:30:20

标签: linux git bash doxygen fileversioninfo

我尝试使用Doxygen为我的Android项目生成文档,我想使用FILE_VERSION_FILTER标记自动获取任何文件的数字版本。

我知道Git使用哈希作为提交的id,但有没有办法获得单独文件的数字版本?

为了更好地了解我想要做什么,您可以在Doxygen documentation

中看到此示例

但是,我想使用git而不是CVS或SVN。 Git甚至可以吗?

[我在Ubuntu上,将使用bash作为shell]

1 个答案:

答案 0 :(得分:3)

Git不存储存储库中任何数字版本的对象。我想您想知道对象被更改了多少次(存储在存储库中)并且很容易获得:使用git log,告诉它为每次提交生成一行文本并计算行数它的输出:

要计算存储在存储库中的可从当前分支访问的文件foo的版本,请执行以下操作:

git log --oneline HEAD -- foo | wc -l

您可以使用分支名称替换HEAD,以获取存储文件foo上的更改的分支可以访问的提交数,或者您可以完全删除它。

请记住,您获得的数字并非每个版本的文件都是唯一的,这取决于您用于获取日志的路径。

检查修订图的下一个片段:

* commit #4 (merge test into master)
|\
* | commit #3 (on branch master)
| * commit #2 (on branch test)
|/
* commit #1 (on master)

假设文件foo已在提交#1上添加,并在显示的所有其他提交中进行了修改。

在不同的提交上运行上面的命令将产生以下值:

+--------+---------------+
| commit | # of versions |
+--------+---------------+
|   #1   |  1            |
|   #2   |  2            |
|   #3   |  2            |
|   #4   |  4            |
+--------+---------------+