Git跟踪版本吗?

Git跟踪版本吗?,git,version,tags,keyword,version-control,Git,Version,Tags,Keyword,Version Control,我是一名Git新手,拥有UNIX SCCS和Microsoft Visual SourceSafe经验 在SCCS中,每个文件都有一个版本(I%),由版本(%R)、级别(L%)、分支(%B)和序列(S%)组成。%I等于R%。%L.B%。%S,好吗?这些被称为ID关键字 其目的是在签入这些ID关键字之前在源代码中插入这些ID关键字,然后在以只读方式签出它们(不更改)时,它会将它们转换为版本号。例如: printf(“版本s\n”,“I”) …将成为 printf(“版本%s\n”,“1.4.6.2

我是一名Git新手,拥有UNIX SCCS和Microsoft Visual SourceSafe经验

在SCCS中,每个文件都有一个版本(I%),由版本(%R)、级别(L%)、分支(%B)和序列(S%)组成。%I等于R%。%L.B%。%S,好吗?这些被称为ID关键字

其目的是在签入这些ID关键字之前在源代码中插入这些ID关键字,然后在以只读方式签出它们(不更改)时,它会将它们转换为版本号。例如:

printf(“版本s\n”,“I”)

…将成为

printf(“版本%s\n”,“1.4.6.2”)

它将打印

版本1.4.6.2

SCCS逐文件跟踪版本,并在每次签入时递增


Git中是否有类似的内容?

正如在SO问题“”中所讨论的,Git没有RCS关键字扩展

最接近的Git命令应该是,以具有某种提交引用

但将元数据(即关于数据“文件”的数据“版本id”)与数据(文件)混合在一起通常不是一个好主意。
如果您确实需要此类信息,则使用一个单独的特殊文件列出其他常规文件及其关联的版本id更为实用


即使ClearCase在每个文件分支和序列方面的概念与SCS相似,也没有嵌入的版本号:请参阅。

您可以使用生成唯一的标记名

该命令查找可通过提交访问的最新标记。如果该标记指向提交,则仅显示该标记。否则,它会在标记名后面加上标记对象顶部的附加提交数和最近提交的缩写对象名

如何使用“git descripe”()确定软件版本号的示例:


我同意您不应该将版本号注入源代码,然后将其存储在版本控制中。版本号应该在生成时确定-可能会替换源代码中的标记或使用属性文件。我从未标记原始提交。换句话说,我收到了其他人的旧代码,更新了t使用最新版本的编译器,然后发现了Git。我有两个提交:原始代码和我的更改。我猜原始代码将是主代码,对吗?那么,我如何标记主代码?(事实上,他不是主代码…他的代码真的很烂…哈哈。)master是一个分支,所以除非您创建了一个新分支,否则您的提交都将在它上面。
01  git commit -m'Commit One.'
02  git tag -a -m'Tag One.' 1.2.3
03  git describe    # => 1.2.3
04  git commit -m'Commit Two.'
05  git describe    # => 1.2.3-1-gaac161d
06  git commit -m'Commit Three.'
07  git describe    # => 1.2.3-2-g462715d
08  git tag -a -m'Tag Two.' 2.0.0
09  git describe    # => 2.0.0