如何在git中获取分配给文件的所有标记?

时间:2009-01-17 03:48:44

标签: git

我需要告诉文件的哪个版本/ SHA1与一个或多个标签相关联。在CVS中,可以获得类似于此的输出:

  

档案:abc.txt
   Rev :1.0
  标签:R1_0,R1_1

     

Rev :1.1
  标签:R1_2

如何使用git获取文件的标记历史记录

编辑: 我经常使用此函数来判断文件的修订正在生成中。我知道哪个版本(标签)的软件正在生产中。基于此,我想知道给定文件的哪个版本被标记(以及之前的标记与此文件修订版本相关联)。

在上面的例子中:
R1_1将投入生产。查询abc.txt,我可以看出,abc.txt的rev1.0用于R1_0和R1_1。 (因此,R1_1中的错误不太可能是由abc.txt引起的,因为它仍然是与R1_0相同的文件)

3 个答案:

答案 0 :(得分:4)

我认为你试图过于具体地将概念从一个版本控制系统转换到另一个版本控制系统。我会问,“自abc.txt以来R1_1如何变更?”

git log R1_1.. -- abc.txt

现在你知道两件事 - 它已经改变了,以及如何改变。如果您想查看更改,请投放-p

不太有帮助,但您要求:

要完全按照你要求做的事情(我觉得它没那么有用),假设你是tagging properly

git describe `git log --pretty=format:%H -n 1 abc.txt`

它显示最接近改变文件的最后一次提交的标记名称。

答案 1 :(得分:1)

在git标签中始终与整个项目的状态相关联,而不是与单个文件的版本相关联。您可以轻松获取具有“git diff --name-only R1_0 R1_1”(或更具描述性的“git diff --stat --summary R1_0 R1_1”的版本之间已更改的所有文件的列表。您可以使用“git log -1 <file>”获取触及文件的上次提交

但是如果你想找到一个bug,我认为使用git-bisect命令查找引入bug的修订版要好得多。你不仅知道哪个文件有错误,而且知道文件的哪个部分引入了它(改变了什么改变了)。

答案 2 :(得分:0)

你想要完成什么? SHA1标识该时间点整个仓库的状态。