2014-06-06 40 views
0

我是新来源代码管理和Git。我正在使用一本书,发现很难取得很大进展。请帮我理解Git。git tag命令如何知道要标记哪个提交?

My Book - Git:每个人的版本控制。

主题 - Git标记。

步骤 -

首先,CD到本地系统(由书提供) “卡布奇诺” 回购。

当您想用某些元数据在历史记录中标记某个特定点并在此后使用相同标记引用它时,标记会派上用场。我们在Git中有两种类型的标签 - 轻量级和注释。

现在,让我们在我们的卡布奇诺库通过执行创建一个轻量级的标签下面: git tag edge_v1.1

刚才发生了什么? 我们已经成功创建并将轻量/未注释的标签附加到特定的提交。我们还学会了列出存储库中可用的所有标记,并在需要时查看与任何给定标记关联的粒度级别更改。

我不明白哪个特定的提交被标记/标记此命令。我期望一个标记命令像这个伪代码git tag COMMID_ID=XXX edge_v1.1。请解释由于tag命令真正发生了什么,以及标记如何真正起作用。

书中接着说一些其他的东西 -

我们了解引用与标签名称,而不是提交SHA1 ID提交。让我们明白这实际上意味着什么。

我们已经学习了git checkout作为函数返回历史。如您所知,此过程需要提交的SHA1 ID,您希望访问该ID。现在我们来看看在处理标签时如何完成 。在CLI窗口中键入以下命令:

git checkout 2e361b44 
git checkout edge_v1.1 

我们检查出来提交在使用通常的结帐(GIT结账SHA1 ID)方法提前制作,但回来到最​​新与用法提交与提交相关联的标记名称(edge_v1.1)。

这最后一段是什么意思?

回答

3

git tag edge_v1.1git tag edge_v1.1 HEAD相同 - HEAD表示“当前检出的提交”(通常是当前分支上最近的提交)。

如果您想标记其他提交,只需将HEAD替换为提交ID即可。

至于标签的工作方式,您可以在.git/refs/tags目录中找到它们。它们只是指向提交的文件。


git checkout 2e361b44

此命令会得到历史项目的特定版本,并把它变成你的工作目录。例如,如果您想测试您的程序过去的工作方式,这很有用。

git checkout edge_v1.1

这是相同的命令,只是要求的Git给你一个不同的版本。

这本书是说,你可以切换到第一个命令的旧版本,然后切换回当前版本与第二个。

+1

和HEAD是您的工作副本当前基于的提交(通常是最新提交) – Thilo

+0

@Thilo - 谢谢。这现在很有意义。你能否也请告诉我最后一段的含义是什么?谢谢。 –

+1

在你的仓库里面,有一个保存所有Git元数据的'.git'文件夹。标签只是位于此文件夹内的文件。 –

相关问题